rubrics

package
v0.6.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() *evaluation.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