.agents/speckit-author/SKILL.md
Creates SpecKit specifications (spec.md, plan.md) in feature/release/hotfix worktrees. Detailed implementation guidance. Use when: In worktree, need specifications, implementation planning Triggers: write spec, create plan, feature specification
npx skillsauth add stharrold/finder speckit-authorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Creates detailed specifications and implementation plans for features, releases, and hotfixes within worktree directories.
Templates are located in templates/:
spec.md.template - Detailed technical specification (297 lines)plan.md.template - Task breakdown and implementation plan (367 lines)SpecKit is now an interactive callable tool that runs as a Python script in feature worktrees.
Command:
python .claude/skills/speckit-author/scripts/create_specifications.py \
<workflow_type> <slug> <gh_user> [--todo-file <path>]
Arguments:
workflow_type: feature, release, or hotfixslug: Feature slug (e.g., my-feature)gh_user: GitHub username--todo-file: Optional path to TODO file (default: auto-detect)--no-commit: Skip git commit (for testing)Example:
# In feature worktree
cd /Users/user/german_feature_my-feature
python .claude/skills/speckit-author/scripts/create_specifications.py \
feature my-feature stharrold \
--todo-file ../TODO_feature_20251024T143000Z_my-feature.md
Session output:
Working in worktree: /Users/user/german_feature_my-feature
Branch: feature/20251024T143000Z_my-feature
✓ Auto-detected TODO file: ../TODO_feature_20251024T143000Z_my-feature.md
======================================================================
SpecKit Interactive Specification Tool
======================================================================
✓ Detected BMAD planning context: ../planning/my-feature/
BMAD Summary:
- Requirements: 15 functional requirements, 5 user stories
- Architecture: Technology stack defined
- Epics: 3 epics defined
Implementation Questions:
----------------------------------------------------------------------
Database migrations strategy?
1) Alembic (recommended)
2) Manual SQL migrations
3) None needed
[default: Alembic (recommended)]
> 1
Include end-to-end (E2E) tests? (Y/n) > n
Include performance/load tests? (Y/n) > n
Include security tests (OWASP checks)? (Y/n) > n
Task granularity preference?
1) Small tasks (1-2 hours each)
2) Medium tasks (half-day each)
3) Large tasks (full-day each)
[default: Small tasks (1-2 hours each)]
> 1
Follow epic priority order from epics.md? (Y/n) > Y
Any additional implementation notes or constraints? (optional)
> Use type hints throughout
======================================================================
Generating specifications...
======================================================================
✓ Created specs/my-feature/spec.md (1247 chars)
✓ Created specs/my-feature/plan.md (1583 chars)
✓ Created specs/my-feature/CLAUDE.md
✓ Created specs/my-feature/README.md
✓ Updated TODO file: ../TODO_feature_20251024T143000Z_my-feature.md
Added 0 tasks across 0 categories
✓ Committed changes to branch
======================================================================
SpecKit Specifications Created Successfully!
======================================================================
Files created:
- specs/my-feature/spec.md
- specs/my-feature/plan.md
- specs/my-feature/CLAUDE.md
- specs/my-feature/README.md
Next steps:
1. Review spec.md and plan.md
2. Implement tasks from plan.md
3. Update TODO task status as you complete each task
4. Refer to ../planning/my-feature/ for BMAD context
What happens:
Generated spec.md includes:
Generated plan.md includes:
Session output:
======================================================================
SpecKit Interactive Specification Tool
======================================================================
⚠ No BMAD planning found for 'my-feature'
I'll gather requirements through comprehensive Q&A.
Recommendation: Use BMAD planning for future features
======================================================================
What is the main purpose of this feature?
> Add vocabulary search functionality
Who are the primary users of this feature?
> German language learners
How will success be measured? (metrics, goals)
> Users can search vocabulary by German word, English translation, or POS
Technology Stack:
Web framework (if applicable)?
1) FastAPI
2) Flask
3) Django
4) None
[default: None]
> 4
Database?
1) SQLite (dev)
2) PostgreSQL
3) MySQL
4) None
[default: None]
> 1
Database migration strategy?
1) Alembic
2) Manual SQL
3) None
[default: Alembic]
> 1
Testing framework?
1) pytest (recommended)
2) unittest
3) other
[default: pytest (recommended)]
> 1
Performance target? (e.g., '<200ms response time', 'not critical')
> < 100ms query time
Security requirements? (e.g., 'authentication', 'encryption', 'none')
> none
Test coverage target? [80%]
> 85
Include E2E tests? (y/N) > n
Include performance tests? (y/N) > n
Task size preference?
1) Small (1-2 hours)
2) Medium (half-day)
3) Large (full-day)
[default: Small (1-2 hours)]
> 1
[... generates spec.md and plan.md ...]
What happens:
Location: .claude/skills/speckit-author/scripts/create_specifications.py
Implements:
Context Detection
Interactive Q&A
Template Processing
Directory Creation
TODO Update
Git Commit
Specification documents are created in:
specs/
└── <feature-slug>/
├── spec.md # Technical specification
├── plan.md # Implementation plan
├── CLAUDE.md # Context for this spec
├── README.md # Human-readable overview
└── ARCHIVED/ # Deprecated specs
Location: .claude/skills/speckit-author/scripts/update_asbuilt.py
Used in: Phase 4 (Integration + Feedback) after PR merge
Implements:
Read As-Built Specs
Compare with Planning
Gather Metrics
Update Planning Docs
Git Commit
Invocation:
# From main repo on contrib branch after PR merge
python .claude/skills/speckit-author/scripts/update_asbuilt.py \
planning/my-feature specs/my-feature
The workflow-orchestrator calls SpecKit scripts during workflow phases.
Workflow orchestrator code:
# In workflow orchestrator - Phase 2.3
if current_phase == 2 and current_step == '2.3':
import subprocess
# Call SpecKit interactive tool
result = subprocess.run([
'python',
'.claude/skills/speckit-author/scripts/create_specifications.py',
workflow_type, # feature, release, hotfix
slug, # my-feature
gh_user, # stharrold
'--todo-file', f'../TODO_{workflow_type}_{timestamp}_{slug}.md'
], check=True)
# SpecKit handles:
# - Interactive Q&A with user
# - BMAD context detection
# - spec.md and plan.md generation
# - TODO_*.md update
# - Git commit
print("✓ SpecKit specifications created")
print(f" Next: Implement tasks from specs/{slug}/plan.md")
After PR merge to contrib branch:
# In workflow orchestrator - Phase 4.4
if current_phase == 4 and current_step == '4.4':
import subprocess
# Call as-built update tool
result = subprocess.run([
'python',
'.claude/skills/speckit-author/scripts/update_asbuilt.py',
f'planning/{slug}',
f'specs/{slug}'
], check=True)
# update_asbuilt.py handles:
# - Deviation analysis
# - Interactive metrics gathering
# - Planning document updates
# - Git commit
print("✓ BMAD planning updated with as-built details")
print(f" Feedback loop completed for {slug}")
Both templates use these placeholders:
{{TITLE}} - Feature name (title case){{WORKFLOW_TYPE}} - feature, release, or hotfix{{SLUG}} - Feature slug (kebab-case){{DATE}} - Creation date (YYYY-MM-DD){{GH_USER}} - GitHub usernameWhen BMAD planning documents exist in ../planning/<feature>/:
1. Read planning context:
# Read BMAD planning docs from main repo
requirements = Path('../planning/<feature>/requirements.md').read_text()
architecture = Path('../planning/<feature>/architecture.md').read_text()
epics = Path('../planning/<feature>/epics.md').read_text()
2. Extract key information:
From requirements.md:
From architecture.md:
From epics.md:
3. Generate spec.md informed by planning:
# spec.md sections should reference BMAD docs
## Functional Requirements
FR-001 from requirements.md: [Requirement description]
- Acceptance Criteria (from requirements.md):
- [ ] AC 1...
- [ ] AC 2...
## Technology Stack
Stack defined in architecture.md:
- Language: Python 3.11+
- Framework: FastAPI (chosen in architecture.md)
- Database: PostgreSQL (from architecture.md)
## Security Requirements
From architecture.md Section "Security Considerations":
- Authentication: JWT tokens
- Authorization: RBAC
- Input validation: JSON schema
4. Generate plan.md informed by epics:
# plan.md tasks organized by epic
## Epic E-001: Data Layer (from epics.md)
Priority: P0 (Foundation)
Dependencies: None
Tasks:
- [ ] impl_001: Create database schema (from architecture.md data models)
- [ ] impl_002: Implement ORM entities
- [ ] test_001: Unit tests for data layer
## Epic E-002: API Layer (from epics.md)
Priority: P0 (Core functionality)
Dependencies: E-001
Tasks:
- [ ] impl_003: Create API endpoints (from architecture.md)
- [ ] impl_004: Implement request validation
- [ ] test_002: API integration tests
When planning exists:
I found BMAD planning documents:
✓ planning/<feature>/requirements.md (15 functional requirements)
✓ planning/<feature>/architecture.md (Python/FastAPI stack, PostgreSQL)
✓ planning/<feature>/epics.md (3 epics: Data, API, Tests)
I'll use these as context to create detailed SpecKit specifications.
Based on the requirements, I see these priority P0 epics:
- E-001: Data Layer (Foundation)
- E-002: API Layer (Core functionality)
The architecture specifies:
- Framework: FastAPI
- Database: PostgreSQL with SQLAlchemy
- Testing: pytest with ≥80% coverage
Would you like me to expand on any areas before generating specs? (Y/n)
When no planning:
No BMAD planning documents found.
I'll create specifications from scratch through interactive Q&A.
What is the main purpose of this feature?
> [User describes]
What technology stack should we use?
> [User specifies or accepts defaults]
Any specific performance or security requirements?
> [User answers]
Generating specifications...
../planning/<feature>/requirements.md sectionsarchitecture.mdplan.md tasks by epic from epics.mdspec.md AC must cover requirements.md success criteriaAfter implementation completes and PR is merged to contrib branch, SpecKit outputs should update BMAD planning docs with as-built details.
Trigger: Phase 4, after feature PR merged to contrib/<gh-user>
Location: Back in main repo on contrib branch
Process:
# After PR merge, back in main repo
cd /Users/user/Documents/GitHub/german
git checkout contrib/stharrold
git pull origin contrib/stharrold
# Run as-built documentation update
python .claude/skills/speckit-author/scripts/update_asbuilt.py \
planning/<feature>/ \
specs/<feature>/
planning/<feature>/requirements.md:
## As-Built Notes
**Implementation Date:** 2025-10-23
**Final Implementation:** specs/<feature>/spec.md in feature worktree
### Deviations from Original Plan
**FR-001: Original Requirement**
- Planned: Use Redis for caching
- As-Built: Used in-memory caching (LRU cache)
- Reason: Redis not needed for current scale, simpler deployment
**FR-003: Original Requirement**
- Planned: Real-time WebSocket updates
- As-Built: Polling every 30 seconds
- Reason: Simpler implementation, meets performance requirements
### Lessons Learned
- Database connection pooling: Default settings were sufficient
- Testing: Achieved 87% coverage (exceeded 80% goal)
- Performance: Response times < 100ms (better than 200ms target)
planning/<feature>/architecture.md:
## As-Built Architecture
**Implemented:** 2025-10-23
**Detailed Spec:** specs/<feature>/spec.md
### Technology Stack (Final)
Matches planned architecture with these changes:
- Database: PostgreSQL (as planned)
- Caching: ~~Redis~~ → Python LRU cache
- API Framework: FastAPI (as planned)
### Actual Data Models
Final database schema implemented in src/models/:
- [Link to actual code files]
- Schema migration: migrations/versions/abc123_initial.py
### API Endpoints (Implemented)
All planned endpoints implemented:
- POST /api/endpoint (spec.md line 89)
- GET /api/endpoint/{id} (spec.md line 144)
- Additional endpoint added: GET /api/endpoint/search (user request)
### Performance Metrics (Actual)
- Response time p95: 87ms (target: 200ms) ✓
- Throughput: 1200 req/s (target: 1000 req/s) ✓
- Test coverage: 87% (target: 80%) ✓
planning/<feature>/epics.md:
## Epic Completion Status
### E-001: Data Layer (COMPLETED)
- Status: ✓ Completed 2025-10-23
- Actual effort: 2.5 days (estimated: 3 days)
- Delivered:
- Database models (src/models/example.py)
- Migrations (migrations/versions/)
- Unit tests (tests/test_models.py)
- Notes: Faster than expected, schema design was solid
### E-002: API Layer (COMPLETED)
- Status: ✓ Completed 2025-10-25
- Actual effort: 3 days (estimated: 3 days)
- Delivered:
- FastAPI routes (src/api/routes.py)
- Request/response models (src/api/models.py)
- Integration tests (tests/test_api.py)
- Deviations:
- Added search endpoint (not in original epic)
- Used simpler caching strategy
### E-003: Testing & Quality (COMPLETED)
- Status: ✓ Completed 2025-10-26
- Actual effort: 1.5 days (estimated: 2 days)
- Delivered:
- Test coverage: 87% (target: 80%)
- All quality gates passing
- Notes: Exceeded coverage target
## Lessons Learned for Future Epics
1. **Estimation accuracy:** Data layer took less time due to good planning
2. **Scope changes:** Added search endpoint mid-implementation (user request)
3. **Technology choices:** Simpler caching was sufficient, saved complexity
4. **Quality gates:** Setting ≥80% coverage target was appropriate
update_asbuilt.pyLocation: .claude/skills/speckit-author/scripts/update_asbuilt.py
Purpose: Reads specs/ from worktree, updates planning/ with as-built details
Usage:
python .claude/skills/speckit-author/scripts/update_asbuilt.py \
planning/my-feature/ \
specs/my-feature/
What it does:
Interactive prompts:
Reading as-built specs from merged feature...
✓ Found specs/my-feature/spec.md
✓ Found specs/my-feature/plan.md
Analyzing deviations from BMAD planning...
Found potential deviation:
Planned: Redis caching (architecture.md line 64)
As-Built: LRU cache (spec.md line 142)
Why was this changed?
> [User explains: Simpler, meets requirements]
[Continue for all deviations...]
Found completed epics:
E-001: Data Layer (3 tasks completed)
E-002: API Layer (4 tasks completed)
E-001 estimated 3 days, how long did it actually take?
> [User: 2.5 days]
Any lessons learned for E-001?
> [User: Schema design was solid, migrations went smoothly]
[Continue for all epics...]
Updating planning documents...
✓ Updated planning/my-feature/requirements.md (added as-built notes)
✓ Updated planning/my-feature/architecture.md (added as-built architecture)
✓ Updated planning/my-feature/epics.md (added completion status)
Commit these updates? (Y/n)
Living Documentation:
Improved Planning:
Traceability:
requirements.md (planned) → spec.md (detailed) → src/ (code) → requirements.md (as-built)
development
Shared utilities for file deprecation, directory structure creation, TODO file updates, workflow lifecycle management, archive management, and VCS abstraction (GitHub/Azure DevOps PR feedback methods). Used by all other skills. Use when: Need shared utilities, deprecating files, updating TODO, registering/archiving workflows, managing TODO.md manifest, VCS operations, PR feedback handling Triggers: deprecate, archive, update TODO, create directory, register workflow, archive workflow, sync manifest, VCS operations, PR feedback
development
Orchestrates git workflow for Python feature/release/hotfix development. Loads and coordinates other skills based on current context. Includes PR feedback handling via work-item generation. Use when: - User says "next step?" or "continue workflow" - Working in git repo with TODO_[feature|release|hotfix]_*.md files - Need to determine workflow phase and load appropriate skills - Handling PR feedback via work-items Triggers: next step, continue, what's next, workflow status, PR feedback Coordinates: tech-stack-adapter, git-workflow-manager, bmad-planner, speckit-author, quality-enforcer, workflow-utilities Context management: Prompt user to run /context when context usage is high, then /init to reset before continuing workflow.
development
Detects Python project configuration and provides commands for testing, building, coverage, and containerization. Use when: Starting workflow, detecting project stack, need TEST_CMD Triggers: detect stack, what commands, initial setup Outputs: TEST_CMD, BUILD_CMD, COVERAGE_CMD, COVERAGE_CHECK, MIGRATE_CMD
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".