sova-spec
Skill3 starsChanged 5 days agoApache-2.0View on GitHub
Produce a structured specification document for an issue before development starts.
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- templates/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- templates/CLAUDE.mdCLAUDE.md
- dashboard-designSkill
- database-patternsSkill
- design-systemSkill
- design-tasteSkill
- issue-templateSkill
- sova-address-prSkill
- sova-after-mergeSkill
- sova-agent-readinessSkill
- sova-audit-instructionsSkill
- sova-debugSkill
- sova-develop-explainSkill
- sova-develop-fullSkill
- sova-developSkill
- sova-extract-knowledgeSkill
- sova-find-taskSkill
- sova-health-auditSkill
- sova-ingest-reviewSkill
- sova-integrate-prSkill
- sova-issueSkill
- sova-new-featureSkill
- sova-optimize-knowledgeSkill
- sova-prSkill
- sova-rearrange-commitsSkill
- sova-researchSkill
- sova-review-fullSkill
- sova-review-prSkill
- sova-reviewSkill
- sova-simplifySkill
- sova-standupSkill
- sova-statusSkill
- sova-testSkill
- sova-update-docsSkill
- testing-patternsSkill
- visual-auditSkill
- dashboard-designSkill
- database-patternsSkill
- design-tasteSkill
- issue-templateSkill
- testing-patternsSkill
- visual-auditSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. About 0 are common, 22 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈22
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
If the arguments provided when this skill is invoked is a text description (not a number or ticket key), use it directly as the problem …
- Distinctive: line 54
Read whatever exists; skip files that are missing:
- Distinctive: line 63
Read existing patterns in those areas: match them, don't invent new ones
- Distinctive: line 65
Check for related prior work (similar features, relevant tests)
- Distinctive: line 74
Before writing the spec, verify each of the following:
- Distinctive: line 76
Every function referenced has been read.
- Distinctive: line 77
Every model field referenced has been verified in the model file
- Distinctive: line 78
Every external dependency (library function, service call) has been checked for actual behavior
- Distinctive: line 79
No item in the planned Open Questions section can be answered by reading code
- Distinctive: line 81
If any item fails this checklist, go back to Step 3 and read the relevant file before continuing.
- Distinctive: line 85
Create the directory if needed:
- Distinctive: line 197
Keep the implementation plan concrete: "add X to Y" not "implement the feature"
- Distinctive: line 200
Prefer reusing existing patterns over introducing new abstractions
- Distinctive: line 201
If the issue has acceptance criteria, every criterion must be covered by at least one implementation step
- Distinctive: line 212
If the user gives feedback:
- Distinctive: line 213
Update the spec file with the requested changes
- Distinctive: line 215
Ask for approval again
- Distinctive: line 219
When the user approves, update the spec:
- Distinctive: line 225
After approval, ask: "Write the spec back to the issue/ticket description?"
- Distinctive: line 227
If the user agrees, update the tracker with the spec appended to the original description:
- Very specific: line 256
If the user declines, skip this step.
- Very specific: line 260
Before spec: Run the sova-find-task skill to pick the next issue
- Very specific: line 261
After spec: Run the sova-develop skill or the sova-develop-full skill with the issue number to implement
- Distinctive: line 267
NEVER use emojis in any output
- Distinctive: line 270
If the issue lacks enough detail to spec, list concrete open questions instead of guessing
- Distinctive: line 271
Never populate Open Questions with implementation details findable by reading the codebase.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Specification
Produce a structured specification document for a task before development starts. Shifts architectural and UX decisions to the cheap planning phase instead of the expensive coding phase.
Task: the arguments provided when this skill is invoked
Instructions
Step 1: Fetch the Task
If the arguments provided when this skill is invoked is a text description (not a number or ticket key), use it directly as the problem statement and skip to Step 2.
Determine the task source by running sova config and reading the task_source row (configuration lives in .claude/sova.db, not in a file).
GitHub (the default):
gh issue view <arguments> --json number,title,body,labels,milestoneJIRA (task_source.type = "jira"):
jira issue view <arguments> --plainExtract: title, description, status, linked/blocked tickets, components.
Save the original description verbatim: it will be preserved in the spec.
Early exit (already implemented): if the issue body contains a Research section that concludes the issue is already fully implemented (look for phrases like "already implemented", "already complete", "no remaining work"), write a minimal spec file to .claude/specs/{issue-number}-already-implemented.md with the following content, then stop. Do not explore the codebase or write a full spec:
# Spec: {Issue title}
**Issue**: #{number}
**Status**: approved
**Created**: {YYYY-MM-DD}
**Complexity**: trivial
## Problem
Already implemented per research findings.
## Solution
No changes needed. The research step confirmed this issue is already fully implemented.Step 2: Read Project Context
Read whatever exists; skip files that are missing:
CLAUDE.mdandAGENTS.mdfor project conventions.claude/rules/architecture.mdfor component overview and design decisions- The cookbook for known patterns and past mistakes: the
README.mdindex of.claude/agent-memory/cookbook/plus the domain files relevant to this task when that directory exists, otherwise.claude/agent-memory/cookbook.md; also.claude/agent-memory/common-mistakes.mdif present
Step 3: Explore the Codebase
Based on the issue, identify the affected areas:
- Find the modules, files, and functions that will need changes
- Read existing patterns in those areas: match them, don't invent new ones
- Identify reusable components, utilities, and test fixtures
- Check for related prior work (similar features, relevant tests)
- Find the closest precedent: which prior task or file implements something similar? Note specific file paths and line numbers as the pattern reference.
Be thorough here. The spec's value comes from grounding decisions in the actual code, not from generic planning.
Verification requirement: For every function, model field, class, or constant referenced in the spec, open the source file and confirm it exists with the stated signature and return type. Do not state "X has field Y" without having read the model. Do not state "function F returns Z" without having read the function body.
Pre-Write Checklist
Before writing the spec, verify each of the following:
- Every function referenced has been read; signature and return type confirmed
- Every model field referenced has been verified in the model file
- Every external dependency (library function, service call) has been checked for actual behavior
- No item in the planned Open Questions section can be answered by reading code
If any item fails this checklist, go back to Step 3 and read the relevant file before continuing.
Step 4: Write the Spec
Create the directory if needed:
mkdir -p .claude/specsGenerate a slug from the issue title (lowercase, hyphens, max 40 chars). Write the spec to .claude/specs/{issue-number}-{slug}.md:
# Spec: {Issue title}
**Issue**: #{number} (or JIRA key)
**Status**: draft
**Created**: {YYYY-MM-DD}
**Complexity**: simple | moderate | complex
## Problem
What problem does this solve? 1-3 sentences from the user's perspective.
## Use Cases
What the feature does for the user, written before how it is built. One entry per concrete scenario (typically 1-4):
1. **As a {role}, I want {goal}, so that {benefit}.**
Done when: {observable, testable outcome}; {another outcome, including the unhappy path}.
2. ...
(Include this section for new features and other non-trivial new capabilities. Omit it for bug fixes and small enhancements, where the Problem section already says everything.)
## Solution
High-level approach in 2-4 sentences. What changes and why.
## Pattern Reference
Which existing implementation to follow as a model:
- Ticket/PR that implemented something similar
- File paths with line numbers for the reference implementation
- Key classes, methods, or patterns to reuse
## Data Model
New or modified models, fields, constraints.
Include migration notes if relevant.
(Omit this section if no DB changes.)
## API Changes
New or modified endpoints with request/response shapes.
(Omit this section if no API changes.)
## User Interface
For UI features, include:
- User flow: what the user does step by step
- ASCII mockup of the layout/component
- Which existing templates/components to reuse
- Responsive behavior (mobile considerations)
(Omit this section for backend-only changes.)
## Implementation Plan
Ordered steps. Each step should be one commit-sized unit of work.
Reference specific files to create/modify.
1. Step one: what and where
2. Step two: what and where
3. ...
## Design Decisions
Pre-answered questions for every ambiguity found during exploration.
The implementing agent should not need to make architectural choices.
1. **Question?** Answer with rationale.
2. **Question?** Answer with rationale.
(Omit if no ambiguities exist.)
## Scope Boundaries
Explicit limits to prevent over-engineering.
- Do NOT {thing that seems related but is out of scope}
- Out of scope: {related concern for a future task}
## Edge Cases
Things the implementation must handle that aren't obvious from the issue.
## Testing Strategy
What to test: key scenarios, edge cases, integration points.
Reference existing test patterns or fixtures to reuse.
## Code Dependencies
Existing services, utilities, or patterns to reuse.
Reference specific functions/classes with file paths.
## Open Questions
Items that require user input before development can start: business rules, scope boundaries, UX preferences, or external system behavior that cannot be determined from the codebase. Never put code facts here. If uncertain about a code fact, read the relevant file; if it cannot be found, document the assumption in Design Decisions instead.
(Omit this section if all uncertainties can be resolved by reading code.)Guidelines for the spec content:
- Reference specific file paths and function names discovered in Step 3
- Keep the implementation plan concrete: "add X to Y" not "implement the feature"
- Each implementation step should map to roughly one commit
- Complexity rating: simple (1-2 files, <50 lines), moderate (3-6 files, 50-200 lines), complex (7+ files or >200 lines)
- Prefer reusing existing patterns over introducing new abstractions
- If the issue has acceptance criteria, every criterion must be covered by at least one implementation step
- When the spec has a Use Cases section, write it before the Solution, and make sure every "Done when" outcome is covered by an implementation step and named in the Testing Strategy: the use cases define what done means, and the plan only describes how to get there
Step 5: Present for Review
Show the full spec to the user. Ask:
Spec written to
.claude/specs/{filename}. Review the plan above: anything to change, add, or remove? Say "approved" to mark it ready for thesova-developskill.
Step 6: Iterate
If the user gives feedback:
- Update the spec file with the requested changes
- Show the updated sections (not the full spec again unless asked)
- Ask for approval again
Step 7: Mark Approved
When the user approves, update the spec:
- Change
**Status**: draftto**Status**: approved - Confirm: "Spec approved. Run the
sova-developskill with the issue number to start implementation."
Step 8: Write Back to Tracker (optional)
After approval, ask: "Write the spec back to the issue/ticket description?"
If the user agrees, update the tracker with the spec appended to the original description:
GitHub:
BODY=$(mktemp)
cat > "$BODY" <<'ISSUE_BODY'
<updated body>
ISSUE_BODY
gh issue edit <arguments> --body-file "$BODY"JIRA (requires jira-cli by ankitpokhrel):
jira issue edit <arguments> -b "<updated body>" --no-inputFormat the updated body as:
## Original Description
{original description preserved verbatim}
---
## Implementation Spec
{spec content from Step 4, without the frontmatter header}If the user declines, skip this step; the spec file in .claude/specs/ is the primary artifact.
Cross-References
- Before spec: Run the
sova-find-taskskill to pick the next issue - After spec: Run the
sova-developskill or thesova-develop-fullskill with the issue number to implement
Rules
- This command plans only. Do NOT write any implementation code
- Spec files are committed to git as provenance records (they accumulate design decisions across the pipeline)
- NEVER use emojis in any output
- Omit spec sections that don't apply (e.g., no "Data Model" for a pure UI change)
- Ground every recommendation in actual code found during Step 3
- If the issue lacks enough detail to spec, list concrete open questions instead of guessing
- Never populate Open Questions with implementation details findable by reading the codebase. If all uncertainties can be resolved by reading code, the Open Questions section should be omitted entirely.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

