Create a structured assessment document that grades a target on a 0-10 scale using a weighted rubric and save it to the project's docs/assessments/ directory.
Trigger: when the user asks to grade, rate, score, evaluate, or assess a specific target — a package, a project/repo, a source file, an architecture decision, a pull request, or a document. Also triggered directly via /create-assessment. This skill is about producing a numeric grade, not listing issues — for issue-triage with severity levels use /create-audit.
Arguments: $ARGUMENTS — a description of what to assess (e.g. "the ingest pipeline package", "src/App.jsx", "the decision to self-host Fly Postgres", "PR #412", "docs/specs/local-dev.md"). The user may also append using dimensions: <name> <weight>, <name> <weight>, ... to override the default rubric.
Steps
Parse the target from $ARGUMENTS. If empty or vague, infer from recent conversation. If still unclear, ask the user what to assess and which dimensions matter most.
Classify the target into exactly one type: package | project | source-file | architecture-decision | pull-request | document | other. State the classification explicitly in the output doc.
Select the rubric. If the user provided dimensions+weights in $ARGUMENTS, use those verbatim. Otherwise use the built-in rubric for the classified type (see Rubrics below). For other, pick the closest rubric and note the adaptation.
Investigate each dimension. Read relevant source files, configs, tests, CI logs, git history, external state (deployment status, dependency advisories, benchmarks) as needed. Every score must be backed by evidence: file:line, command output, metric, test result, or a specific historical event. Do not guess. If you cannot gather evidence for a dimension, score it 0 and explain why in the Evidence column.
Score each dimension 0-10 against the grade bands below. Compute the overall grade as Σ(weight × score), rounded to 1 decimal.
Generate the assessment document using the structure below.
Generate a filename in the format: <target-slug>-<YYYY-MM-DD>.md. Use lowercase kebab-case. If the target is a file path, slug is the basename without extension (src/App.jsx → app-jsx). If it's a PR, use pr-<N>. If it's a decision, use a short kebab phrase.
Write the file to docs/assessments/<filename>. Create the docs/assessments/ directory if it doesn't exist.
Report to the user: show the file path, the overall grade and its band, and the top 1-2 highest-leverage improvements. Do not dump the full document into chat.
Grade bands
| Grade |
Band |
Meaning |
| 9.0-10.0 |
Excellent |
Ship/adopt without reservation |
| 7.0-8.9 |
Solid |
Production-ready; minor polish |
| 5.0-6.9 |
Passable |
Usable but has real gaps; fix before scaling |
| 3.0-4.9 |
Weak |
Significant problems; rework advised |
| 0.0-2.9 |
Broken |
Do not ship/adopt |
Rubrics by target type
Weights within each rubric sum to 1.00.
package
| Dimension |
Weight |
| Correctness (tests pass, matches spec) |
0.25 |
| API design & ergonomics |
0.15 |
| Test coverage & quality |
0.20 |
| Documentation (README, examples, API docs) |
0.10 |
| Maintenance signals (release cadence, open issues, responsiveness) |
0.10 |
| Security & dependency health |
0.20 |
project
| Dimension |
Weight |
| Architecture clarity (boundaries, layering) |
0.20 |
| Code quality & consistency |
0.15 |
| Test coverage |
0.15 |
| CI/CD & automation |
0.10 |
| Documentation (CLAUDE.md, README, runbooks) |
0.10 |
| Security posture |
0.15 |
| Observability (logs, metrics, alerting) |
0.15 |
source-file
| Dimension |
Weight |
| Correctness |
0.30 |
| Readability |
0.20 |
| Testability |
0.15 |
| Coupling & cohesion |
0.15 |
| Performance considerations |
0.10 |
| Security |
0.10 |
architecture-decision
| Dimension |
Weight |
| Problem framing |
0.20 |
| Solution fit |
0.25 |
| Alternatives considered |
0.15 |
| Trade-offs made explicit |
0.15 |
| Reversibility / migration path |
0.15 |
| Operational impact (cost, ops load) |
0.10 |
pull-request
| Dimension |
Weight |
| Scope focus (one thing, well-scoped) |
0.15 |
| Diff clarity |
0.15 |
| Test coverage of the change |
0.25 |
| Risk & rollback plan |
0.20 |
| PR body quality (context, test plan) |
0.10 |
| CI signal |
0.15 |
document
| Dimension |
Weight |
| Clarity |
0.25 |
| Completeness |
0.25 |
| Evidence / citations |
0.15 |
| Actionability |
0.20 |
| Maintenance hooks (owner, dates, versioning) |
0.15 |
Document structure
# <Target Title> — Assessment — <YYYY-MM-DD>
<One-line summary of what was assessed and why.>
**Target type:** <type>
**Overall grade: X.X / 10 — <Band>**
## Scope
What was included and excluded from this assessment, and which rubric was applied (built-in for `<type>`, or a user-provided custom rubric).
## Rubric & scores
| Dimension | Weight | Score | Weighted | Evidence |
| ----------- | -------: | ----: | -------: | ---------------------- |
| ... | 0.XX | N/10 | N.NN | <file:line, metric, …> |
| **Overall** | **1.00** | — | **X.X** | — |
## Dimension detail
### <Dimension 1> — N/10
Observations with evidence. End with a short "**To raise this score:**" line listing concrete changes that would move the score up.
### <Dimension 2> — N/10
...
## Highest-leverage improvements
Ranked by estimated grade lift. Each item lists the action, the affected dimension(s), and the estimated lift.
1. <Action> — <dimension(s)> — estimated lift: +X.X
2. <Action> — <dimension(s)> — estimated lift: +X.X
## Summary
<2-3 sentence verdict: overall grade in band context, the one dimension dragging the most, and the single recommended next action.>
Rules
- Every score must be backed by evidence in the Evidence column. No gut-feel numbers. If no evidence can be produced, score 0 and say so.
- Use the built-in rubric weights exactly unless the user overrode them at invocation. Do not silently reweight.
- Classify target type before scoring. State the type in the output doc.
- Do not fix issues found. Report them in the Highest-leverage improvements section.
- Do not commit the assessment file. Leave it untracked for the user to review.
- Keep the document concise. Tables over prose where possible. No filler.
- Round the overall grade to 1 decimal. Round weighted-column values to 2 decimals.
- Never invent a target or expand scope beyond what was requested. If scope is unclear, ask.
- If the user asks for a re-assessment of a previously graded target, read the prior file in
docs/assessments/ and include a short "Delta vs " line under the overall grade.
1---2name: create-assessment3description: Create a structured assessment document grading a target on a 0-10 scale with a weighted rubric, saved to docs/assessments/. Triggers on: "grade", "rate", "score", "evaluate", "assess".4---56Create a structured assessment document that grades a target on a 0-10 scale using a weighted rubric and save it to the project's `docs/assessments/` directory.78Trigger: when the user asks to grade, rate, score, evaluate, or assess a specific target — a package, a project/repo, a source file, an architecture decision, a pull request, or a document. Also triggered directly via `/create-assessment`. This skill is about **producing a numeric grade**, not listing issues — for issue-triage with severity levels use `/create-audit`.910Arguments: `$ARGUMENTS` — a description of what to assess (e.g. "the ingest pipeline package", "src/App.jsx", "the decision to self-host Fly Postgres", "PR #412", "docs/specs/local-dev.md"). The user may also append `using dimensions: <name> <weight>, <name> <weight>, ...` to override the default rubric.1112## Steps13141. **Parse the target** from `$ARGUMENTS`. If empty or vague, infer from recent conversation. If still unclear, ask the user what to assess and which dimensions matter most.15162. **Classify the target** into exactly one type: `package` | `project` | `source-file` | `architecture-decision` | `pull-request` | `document` | `other`. State the classification explicitly in the output doc.17183. **Select the rubric.** If the user provided dimensions+weights in `$ARGUMENTS`, use those verbatim. Otherwise use the built-in rubric for the classified type (see Rubrics below). For `other`, pick the closest rubric and note the adaptation.19204. **Investigate each dimension.** Read relevant source files, configs, tests, CI logs, git history, external state (deployment status, dependency advisories, benchmarks) as needed. Every score must be backed by evidence: `file:line`, command output, metric, test result, or a specific historical event. Do not guess. If you cannot gather evidence for a dimension, score it 0 and explain why in the Evidence column.21225. **Score each dimension 0-10** against the grade bands below. Compute the overall grade as `Σ(weight × score)`, rounded to 1 decimal.23246. **Generate the assessment document** using the structure below.25267. **Generate a filename** in the format: `<target-slug>-<YYYY-MM-DD>.md`. Use lowercase kebab-case. If the target is a file path, slug is the basename without extension (`src/App.jsx` → `app-jsx`). If it's a PR, use `pr-<N>`. If it's a decision, use a short kebab phrase.27288. **Write the file** to `docs/assessments/<filename>`. Create the `docs/assessments/` directory if it doesn't exist.29309. **Report to the user**: show the file path, the overall grade and its band, and the top 1-2 highest-leverage improvements. Do not dump the full document into chat.3132## Grade bands3334| Grade | Band | Meaning |35| -------- | --------- | -------------------------------------------- |36| 9.0-10.0 | Excellent | Ship/adopt without reservation |37| 7.0-8.9 | Solid | Production-ready; minor polish |38| 5.0-6.9 | Passable | Usable but has real gaps; fix before scaling |39| 3.0-4.9 | Weak | Significant problems; rework advised |40| 0.0-2.9 | Broken | Do not ship/adopt |4142## Rubrics by target type4344Weights within each rubric sum to 1.00.4546### package4748| Dimension | Weight |49| ------------------------------------------------------------------ | -----: |50| Correctness (tests pass, matches spec) | 0.25 |51| API design & ergonomics | 0.15 |52| Test coverage & quality | 0.20 |53| Documentation (README, examples, API docs) | 0.10 |54| Maintenance signals (release cadence, open issues, responsiveness) | 0.10 |55| Security & dependency health | 0.20 |5657### project5859| Dimension | Weight |60| ------------------------------------------- | -----: |61| Architecture clarity (boundaries, layering) | 0.20 |62| Code quality & consistency | 0.15 |63| Test coverage | 0.15 |64| CI/CD & automation | 0.10 |65| Documentation (CLAUDE.md, README, runbooks) | 0.10 |66| Security posture | 0.15 |67| Observability (logs, metrics, alerting) | 0.15 |6869### source-file7071| Dimension | Weight |72| -------------------------- | -----: |73| Correctness | 0.30 |74| Readability | 0.20 |75| Testability | 0.15 |76| Coupling & cohesion | 0.15 |77| Performance considerations | 0.10 |78| Security | 0.10 |7980### architecture-decision8182| Dimension | Weight |83| ----------------------------------- | -----: |84| Problem framing | 0.20 |85| Solution fit | 0.25 |86| Alternatives considered | 0.15 |87| Trade-offs made explicit | 0.15 |88| Reversibility / migration path | 0.15 |89| Operational impact (cost, ops load) | 0.10 |9091### pull-request9293| Dimension | Weight |94| ------------------------------------ | -----: |95| Scope focus (one thing, well-scoped) | 0.15 |96| Diff clarity | 0.15 |97| Test coverage of the change | 0.25 |98| Risk & rollback plan | 0.20 |99| PR body quality (context, test plan) | 0.10 |100| CI signal | 0.15 |101102### document103104| Dimension | Weight |105| -------------------------------------------- | -----: |106| Clarity | 0.25 |107| Completeness | 0.25 |108| Evidence / citations | 0.15 |109| Actionability | 0.20 |110| Maintenance hooks (owner, dates, versioning) | 0.15 |111112## Document structure113114```markdown115# <Target Title> — Assessment — <YYYY-MM-DD>116117<One-line summary of what was assessed and why.>118119**Target type:** <type>120**Overall grade: X.X / 10 — <Band>**121122## Scope123124What was included and excluded from this assessment, and which rubric was applied (built-in for `<type>`, or a user-provided custom rubric).125126## Rubric & scores127128| Dimension | Weight | Score | Weighted | Evidence |129| ----------- | -------: | ----: | -------: | ---------------------- |130| ... | 0.XX | N/10 | N.NN | <file:line, metric, …> |131| **Overall** | **1.00** | — | **X.X** | — |132133## Dimension detail134135### <Dimension 1> — N/10136137Observations with evidence. End with a short "**To raise this score:**" line listing concrete changes that would move the score up.138139### <Dimension 2> — N/10140141...142143## Highest-leverage improvements144145Ranked by estimated grade lift. Each item lists the action, the affected dimension(s), and the estimated lift.1461471. <Action> — <dimension(s)> — estimated lift: +X.X1482. <Action> — <dimension(s)> — estimated lift: +X.X149150## Summary151152<2-3 sentence verdict: overall grade in band context, the one dimension dragging the most, and the single recommended next action.>153```154155## Rules156157- Every score must be backed by evidence in the Evidence column. No gut-feel numbers. If no evidence can be produced, score 0 and say so.158- Use the built-in rubric weights exactly unless the user overrode them at invocation. Do not silently reweight.159- Classify target type before scoring. State the type in the output doc.160- Do not fix issues found. Report them in the Highest-leverage improvements section.161- Do not commit the assessment file. Leave it untracked for the user to review.162- Keep the document concise. Tables over prose where possible. No filler.163- Round the overall grade to 1 decimal. Round weighted-column values to 2 decimals.164- Never invent a target or expand scope beyond what was requested. If scope is unclear, ask.165- If the user asks for a re-assessment of a previously graded target, read the prior file in `docs/assessments/` and include a short "Delta vs <previous date>" line under the overall grade.