agentleFS
PackmindHubPackmindHub/packmind/.claude/skills/feature-spec/SKILL.md

feature-spec

Skill321 starsChanged 54 days agoApache-2.0View on GitHub

Generate a Packmind feature specification from a GitHub issue, file, URL, or direct description. Breaks Phase 3 into 4 fine-grained approval gates (domain data structures, ports/use cases/routes, frontend components, implementation plan) to catch problems early. Routes work between the OSS sibling (../packmind) and the proprietary repo (cwd). Outputs spec artifacts under tmp/feature-specs/{slug}/ for use with /feature-sprint.

20 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use changelog.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • HashiCorpSkill

    changelog

    Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.

    Also in 4 projects that use this

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 18 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the user wants to:

    line 12
  2. Very specific:

    Before starting, check for an existing task directory at tmp/feature-specs/{slug}/:

    line 76
  3. Distinctive:

    Check which output files exist to determine current phase (see Phase Detection table above)

    line 78
  4. Very specific:

    Read the main spec file's YAML frontmatter for status: DRAFT|COMPLETE

    line 79
  5. Distinctive:

    If user confirms, proceed to the appropriate phase file

    line 88
  6. Distinctive:

    If no task directory found, start a new feature spec

    line 89
  7. Distinctive:

    After generating the implementation plan, a Plan subagent analyzes tasks

    line 123
  8. Very specific:

    When the spec is complete (Phase 4), the next step is /feature-sprint {slug} — the companion skill that executes the implementation plan.

    line 135

“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Feature Spec Skill

Generate a comprehensive feature specification grounded in Packmind's hexagonal architecture, frontend gateway/PM-UI conventions, and the OSS/proprietary fork boundary.

When to Use

Use this skill when the user wants to:

  • Plan a new feature, fix, or refactor that spans Packmind's stack
  • Convert a GitHub issue, design doc, or rough idea into a structured spec
  • Get fine-grained validation of data structures, routes, and components before committing to a plan

Do NOT use for trivial one-line fixes or pure dependency bumps.

Packmind Repo Layout (essential context)

  • Closed-source fork (packmind-proprietary): the current working directory when this skill runs.
  • Open-source repo (packmind): the sibling directory at ../packmind (cloned next to the proprietary repo). Resolve to an absolute path at runtime with realpath ../packmind.
  • Most feature work happens on the OSS repo and auto-merges into the proprietary fork. The proprietary fork only contains paid/closed features (e.g. packages/editions, certain packages/deployments extensions). After an OSS merge, you typically pull on the proprietary side.
  • Architecture: hexagonal (packages/{domain}/{domain,application,infra}), NestJS API at apps/api, React+@packmind/ui frontend at apps/frontend, TypeORM, Jest+@swc/jest.

Input Sources

SourceExamplesDetection
GitHub#123, owner/repo#123, full issue URLPattern #\d+ or github.com/.../issues/
Filefile:spec.md, path/to/spec.mdPrefix file: or readable file
URLhttps://...HTTP(S) URL (non-GitHub)
PromptAny other textDefault

Workflow Phases

Execute phases sequentially. Phases 1 and 4 run seamlessly (no approval gate). Phases 2 and 3 require user approval before proceeding.

PhaseFilePurposeGate
1phase-1-resolve-source.mdDetect source type, fetch content, decide OSS-vs-proprietary routing, create stateseamless
2phase-2-discovery-and-spec.mdResearch Packmind patterns (reference domain, hex layers, frontend conventions), draft acceptance criteria, generate functional specapproval
3phase-3-implementation.mdTechnical approach + implementation plan (4 subtasks below)4 approvals
3A↳ Subtask 3AValidate domain data structures (entities, value objects, events, migrations)approval
3B↳ Subtask 3BValidate ports, contracts, use cases, services, adapters, NestJS routesapproval
3C↳ Subtask 3CValidate frontend components, gateways, query hooks, PM-UI usageapproval
3D↳ Subtask 3DGenerate full implementation plan (task breakdown, grouping, coverage)approval
4phase-4-finalize.mdGenerate context.md, mark spec complete, report (no commit — artifacts live in tmp/)seamless

State Management

State is persisted to markdown files under a git-ignored tmp/ directory for cross-session continuity. Phase progress is inferred from which output files exist — no separate state file needed.

tmp/feature-specs/{slug}/
├── {slug}.md               # Main spec (status: DRAFT → COMPLETE in frontmatter)
├── discovery.md            # Phase 2 output (YAML frontmatter + markdown)
├── functional-spec.md      # Phase 2 output (informed by discovery)
├── implementation-plan.md  # Phase 3 output (includes parallel groups section)
└── context.md              # Phase 4 output (YAML frontmatter + markdown)

Phase Detection (Resume Logic)

Files PresentCompleted PhaseResume At
{slug}.md onlyPhase 1Phase 2
+ discovery.md, functional-spec.mdPhase 2Phase 3
+ implementation-plan.mdPhase 3Phase 4
+ context.md (status: COMPLETE)Phase 4Done

Invocation

Auto-Detection (Resuming)

Before starting, check for an existing task directory at tmp/feature-specs/{slug}/:

  1. Check which output files exist to determine current phase (see Phase Detection table above)
  2. Read the main spec file's YAML frontmatter for status: DRAFT|COMPLETE
  3. If resuming, display:
    **Resuming Feature Spec**: {slug}
    **Current Phase**: {detected_phase}
    **Status**: {status from frontmatter}
    
    Continue from Phase {detected_phase}? (Y/n)
  4. If user confirms, proceed to the appropriate phase file
  5. If no task directory found, start a new feature spec

Starting New

To start a new feature spec: Read phase-1-resolve-source.md and follow its instructions.

<feature-spec-rules> <rule>Execute phases SEQUENTIALLY — never skip phases</rule> <rule>Phases 1 and 4 proceed automatically — no approval gate</rule> <rule>Phases 2 and 3 require USER APPROVAL via AskUserQuestion before proceeding</rule> <rule>Save all artifacts under tmp/feature-specs/{slug}/ — never under tracked folders</rule> <rule>Use Task tool with Explore subagent for codebase research; never read 50 files yourself</rule> <rule>Agent NEVER implements code in this skill — output ONLY specification documents</rule> <rule>Main spec file has status DRAFT until Phase 4 completes</rule> <rule>Always record target_repo (oss | proprietary | both) decided in Phase 1; consumed by /feature-sprint</rule> <rule>Never invent OSS/proprietary boundaries — if unsure, ask the user</rule> </feature-spec-rules>

Output

Final deliverable: tmp/feature-specs/{slug}/{slug}.md + sibling artifacts.

Contains:

  • Functional specification with acceptance criteria
  • Technical approach grounded in Packmind reference patterns
  • Implementation plan with phased tasks (each task has reference file:line patterns)
  • Parallel Groups section (for parallel execution via /feature-sprint)
  • target_repo: oss | proprietary | both

Parallel Execution Support

Phase 3 includes a grouping step that analyzes task dependencies and creates parallel execution groups:

How grouping works:

  1. After generating the implementation plan, a Plan subagent analyzes tasks
  2. Tasks are grouped by file dependencies (tasks sharing files go together)
  3. Groups are non-overlapping (no file belongs to multiple groups)
  4. Results are stored in implementation-plan.md (Parallel Groups section) and context.md (YAML frontmatter)

When grouping is skipped:

  • Tasks have no clear file dependencies
  • Single-file or trivial implementations
  • User opts out during Phase 3 review

Handoff

When the spec is complete (Phase 4), the next step is /feature-sprint {slug} — the companion skill that executes the implementation plan.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.