Help us shape the future of Go! Take the 2026 Go Developer Survey

rubrics

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package rubrics provides evaluation rubrics for spec types.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Available

func Available() []types.SpecType

Available returns all spec types with registered rubrics.

func HasRubric

func HasRubric(specType types.SpecType) bool

HasRubric returns true if a rubric exists for the spec type.

func NewFileLoader

func NewFileLoader(dir string) *fileLoader

NewFileLoader creates a loader that reads rubrics from YAML files. Rubrics are named: {spec-type}.rubric.yaml (e.g., prd.rubric.yaml)

func Register

func Register(rs *RubricSet)

Register adds a rubric set to the registry.

func WriteRubricYAML

func WriteRubricYAML(path string, rs *RubricSet) error

WriteRubricYAML writes a RubricSet to a YAML file.

Types

type CategoricalCriteria

type CategoricalCriteria struct {
	Pass    string
	Partial string
	Fail    string
}

CategoricalCriteria defines pass/partial/fail criteria for a category.

type Category

type Category struct {
	ID          string
	Name        string
	Description string
	Weight      float64
	Required    bool
	Criteria    CategoricalCriteria
}

Category represents a scoring category with categorical criteria.

type CategoryYAML

type CategoryYAML struct {
	ID          string       `yaml:"id"`
	Name        string       `yaml:"name"`
	Description string       `yaml:"description"`
	Weight      float64      `yaml:"weight"`
	Required    bool         `yaml:"required"`
	Criteria    CriteriaYAML `yaml:"criteria"`
}

CategoryYAML represents a category in YAML format.

type CriteriaYAML

type CriteriaYAML struct {
	Pass    string `yaml:"pass"`
	Partial string `yaml:"partial"`
	Fail    string `yaml:"fail"`
}

CriteriaYAML represents pass/partial/fail criteria in YAML format.

type Loader

type Loader interface {
	// Load returns the rubric for a spec type.
	Load(specType types.SpecType) (*RubricSet, error)

	// Available returns all available spec types with rubrics.
	Available() []types.SpecType
}

Loader loads rubrics from various sources.

func DefaultLoader

func DefaultLoader() Loader

DefaultLoader returns the default rubric loader (embedded rubrics).

func EmbeddedLoader

func EmbeddedLoader() Loader

EmbeddedLoader returns a loader that uses embedded Go-defined rubrics.

func NewChainLoader

func NewChainLoader(loaders ...Loader) Loader

NewChainLoader creates a loader that tries multiple loaders in order. The first loader that can load a rubric wins.

func NewEmbedFSLoader

func NewEmbedFSLoader(fsys embed.FS, dir string) Loader

NewEmbedFSLoader creates a loader that reads rubrics from an embedded filesystem. This is useful for organizations that want to compile custom rubrics into their CLI.

Usage:

//go:embed rubrics/*.rubric.yaml
var orgRubrics embed.FS

loader := rubrics.NewEmbedFSLoader(orgRubrics, "rubrics")

func NewSubFSLoader

func NewSubFSLoader(fsys fs.FS) Loader

NewSubFSLoader creates a loader from an fs.FS interface. This is useful when working with fs.Sub() results.

type PassCriteria

type PassCriteria struct {
	RequireAllPass bool // All categories must pass
	MaxCritical    int
	MaxHigh        int
	MaxMedium      int // -1 = unlimited
}

PassCriteria defines what constitutes a passing evaluation.

func DefaultPassCriteria

func DefaultPassCriteria() PassCriteria

DefaultPassCriteria returns the default pass criteria.

func StrictPassCriteria

func StrictPassCriteria() PassCriteria

StrictPassCriteria returns stricter pass criteria.

type PassCriteriaYAML

type PassCriteriaYAML struct {
	RequireAllPass bool `yaml:"require_all_pass"`
	MaxCritical    int  `yaml:"max_critical"`
	MaxHigh        int  `yaml:"max_high"`
	MaxMedium      int  `yaml:"max_medium"`
}

PassCriteriaYAML represents pass criteria in YAML format.

type RubricSet

type RubricSet struct {
	SpecType    types.SpecType
	Name        string
	Description string
	Categories  []*Category
	PassCriteria
}

RubricSet contains all criteria for evaluating a spec type.

func Get

func Get(specType types.SpecType) (*RubricSet, error)

Get returns the rubric set for a spec type.

func LoadWithLoader

func LoadWithLoader(loader Loader, specType types.SpecType) (*RubricSet, error)

LoadWithLoader loads a rubric using a specific loader.

func MustGet

func MustGet(specType types.SpecType) *RubricSet

MustGet returns the rubric set for a spec type, panicking on error.

func NewFAQRubricSet

func NewFAQRubricSet() *RubricSet

NewFAQRubricSet creates the rubric set for FAQ documents.

func NewIRDRubricSet

func NewIRDRubricSet() *RubricSet

NewIRDRubricSet creates the rubric set for Infrastructure Requirements Documents.

func NewMRDRubricSet

func NewMRDRubricSet() *RubricSet

NewMRDRubricSet creates the rubric set for Market Requirements Documents.

func NewNarrative1PRubricSet

func NewNarrative1PRubricSet() *RubricSet

NewNarrative1PRubricSet creates the rubric set for 1-Pager Executive Narratives.

func NewNarrative6PRubricSet

func NewNarrative6PRubricSet() *RubricSet

NewNarrative6PRubricSet creates the rubric set for AWS-Style 6-Pager Narratives.

func NewPRDRubricSet

func NewPRDRubricSet() *RubricSet

NewPRDRubricSet creates the rubric set for Product Requirements Documents.

func NewPressRubricSet

func NewPressRubricSet() *RubricSet

NewPressRubricSet creates the rubric set for Press Release documents.

func NewTRDRubricSet

func NewTRDRubricSet() *RubricSet

NewTRDRubricSet creates the rubric set for Technical Requirements Documents.

func NewUXDRubricSet

func NewUXDRubricSet() *RubricSet

NewUXDRubricSet creates the rubric set for User Experience Design documents.

func (*RubricSet) CategoryByID

func (rs *RubricSet) CategoryByID(id string) (*Category, bool)

CategoryByID returns a category by its ID.

func (*RubricSet) ToEvaluationRubricSet

func (rs *RubricSet) ToEvaluationRubricSet() *rubric.RubricSet

ToEvaluationRubricSet converts to structured-evaluation RubricSet.

func (*RubricSet) ToYAML

func (rs *RubricSet) ToYAML() *RubricYAML

ToYAML converts a RubricSet to RubricYAML.

func (*RubricSet) TotalWeight

func (rs *RubricSet) TotalWeight() float64

TotalWeight returns the sum of all category weights.

type RubricYAML

type RubricYAML struct {
	SpecType     string           `yaml:"spec_type"`
	Name         string           `yaml:"name"`
	Description  string           `yaml:"description"`
	Version      string           `yaml:"version"`
	Categories   []CategoryYAML   `yaml:"categories"`
	PassCriteria PassCriteriaYAML `yaml:"pass_criteria"`
}

RubricYAML represents a rubric definition in YAML format.

func (*RubricYAML) ToRubricSet

func (r *RubricYAML) ToRubricSet() (*RubricSet, error)

ToRubricSet converts a RubricYAML to a RubricSet.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL