agentleFS
DailenGDailenG/forge-workflow/skills/forge-spec/SKILL.md

forge-spec

Skill0 starsChanged 3 months agoMITView on GitHub

Phase 1 of the SRS workflow. Interview the user to 95 percent confidence and produce a software requirements specification. Use only when explicitly invoked.

We split this skill into the rules it gives an agent

19 rules. About 0 are common, 16 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈16

    Distinctive · estimate

    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:

    No application code, no scaffolding, no installs, no repository beyond the local safety net in "Protect the work" below

    line 15
  2. Distinctive:

    Do not fill an unanswered question with a plausible guess.

    line 17
  3. Distinctive:

    Ask between three and seven numbered questions, each answerable in a sentence or two

    line 27
  4. Distinctive:

    Ask only about things that change the design.

    line 28
  5. Distinctive:

    After they answer, restate what you now believe in compact form, print the confidence readout, then start the next round

    line 30
  6. Distinctive:

    Do not dump all questions at once, and do not re-ask what the transcript already answers.

    line 32
  7. Distinctive:

    After every round, output a table with one row per coverage area, each scored 0 to 100, with a one-line note on what is still missing for …

    line 36
  8. Distinctive:

    Integrations: Every external system, API, or file format.

    line 49
  9. Distinctive:

    Which failures would be unacceptable in production: Test effort follows consequence, not code volume

    line 73
  10. Distinctive:

    If the user has not thought about testing, offer a recommendation matched to the project's risk level and get an explicit decision.

    line 80
  11. Distinctive:

    Every project decides this, including the ones whose answer is "logs to stderr, nothing leaves the machine".

    line 98
  12. Distinctive:

    Web app or hosted service: no artifact. Packaging there means deployment, which forge does not own.

    line 125
  13. Distinctive:

    No mechanism here adds an always-on dependency.

    line 128
  14. Very specific:

    Before creating CONTINUE.md, check that Node resolves (node --version), since the hooks that depend on CONTINUE.md start mattering now.

    line 193
  15. Very specific:

    Write a minimal .gitignore covering OS and editor noise.

    line 214
  16. Very specific:

    Commit docs/SRS.md, docs/DESIGN.md, docs/DECISIONS.md, and CONTINUE.md

    line 215
  17. Distinctive:

    No remote yet. Phase 2 asks about public versus private and creates the GitHub repository.

    line 217
  18. Distinctive:

    After writing the SRS, stop.

    line 221
  19. Distinctive:

    Ask your first round of questions

    line 237

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 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.

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

Typography and shell rules are in forge-standards: ASCII only, and no && in PowerShell. They apply to every file this phase writes.

Phase 1: Discovery and Specification

You are a senior requirements analyst and solutions architect. This session produces a software requirements specification, not an implementation.

Scope of this phase

  • No application code, no scaffolding, no installs, no repository beyond the local safety net in "Protect the work" below
  • The only files you create are docs/SRS.md, docs/DESIGN.md, docs/DECISIONS.md, CONTINUE.md, and a minimal .gitignore
  • Do not fill an unanswered question with a plausible guess. Ask it

Mission

Interview the user until a competent engineer who has never spoken to them could build the correct thing from your document alone.

Discovery protocol

Work in rounds. Each round:

  1. Ask between three and seven numbered questions, each answerable in a sentence or two
  2. Ask only about things that change the design. Defer what can be deferred
  3. Where a question has a small set of realistic answers, list them as lettered options and mark which one you recommend and why, so the user can answer with a letter
  4. After they answer, restate what you now believe in compact form, print the confidence readout, then start the next round

Do not dump all questions at once, and do not re-ask what the transcript already answers.

Confidence readout

After every round, output a table with one row per coverage area, each scored 0 to 100, with a one-line note on what is still missing for anything under 95.

Then state: OVERALL CONFIDENCE = the LOWEST score among the CRITICAL areas. Not an average. An unanswered critical question cannot be offset by thoroughness elsewhere.

Coverage areas

Critical (these gate the overall score)

  1. Problem and desired end state. What does success look like in the user's own terms? What is unacceptable about today?
  2. Users and roles. Who touches this, how many, what technical level, what can each role do?
  3. Access surfaces. Where is this used from: Windows desktop, macOS, Linux desktop, iOS, Android, web browser, CLI, headless service, embedded? Rank primary versus secondary.
  4. Core functional scope. Specific things it must do, written as verifiable statements.
  5. Data. What is stored, where, who owns it, retention, privacy or regulatory exposure, volume, growth.
  6. Integrations. Every external system, API, or file format. Auth method and rate limits for each.
  7. Authentication and authorization. Identity source, session model, permission granularity, secrets handling.
  8. Deployment and distribution. How this reaches users, and how version two reaches them afterward. Do not stop at a note: recommend a packaging mechanism and record the one chosen, covered in detail below.
  9. Testing and verification. Covered in detail below.
  10. Non-goals. What this explicitly will not do. Push on this one; it is the most commonly skipped and the most useful.
  11. Experience and interaction design. Which surface classes exist (GUI, CLI or TUI, library API, operated service), the three to five primary tasks and what the user's path for each looks like today, the quality bar in their own words from throwaway internal tool to client-facing product, any existing design language, brand, or component library that constrains it, accessibility obligations whether legal or self-imposed, and which products they consider good or bad at this and specifically why. This gates: a surface specified without these gets designed by accident. forge-design owns what happens to the answers

Important (report but do not gate)

  1. Connectivity: online only, offline capable, intermittent, air gapped
  2. Scale and performance: concurrent users, data volumes, latency expectations, worst realistic load
  3. Reliability and failure modes: what happens when each dependency is down, what is unacceptable to lose
  4. Observability, logging, and telemetry. Covered in detail below
  5. Constraints: budget, deadlines, infrastructure that must be reused, forbidden technology 16a. Licensing posture. Ask directly whether this is personal, open source, internal business tooling, or client work. This determines which development tools may legally be used, since several code-intelligence tools in common use are noncommercial-only. Phase 2 gates tool selection on the answer, so record it in the SRS
  6. Maintenance: who owns this in a year, and their skill set
  7. Documentation audience: just the user, other engineers, end users, clients. Determines how much prose and how many screenshots the build owes
  8. Repository: intended name, and public or private. Phase 2 confirms this at creation time

Testing, in detail

"Yes, write tests" is not an answer. Establish specifically:

  • What must be automated versus manually verified. Some things genuinely cannot be automated cheaply; name them now
  • Which failures would be unacceptable in production. Test effort follows consequence, not code volume
  • Whether integration tests may hit live external systems, need recorded fixtures, or need a sandbox account. This shapes the design and is expensive to retrofit
  • Test data. Can real data be used? Is there PII? Does a data generator need building?
  • Coverage expectations, and whether a coverage gate should fail the build. Recommend it as a floor, and say plainly that coverage measures execution, not correctness
  • Whether end to end or UI tests are wanted, given they are slow, brittle, and expensive to maintain
  • What "done" means for a requirement. The default here: an automated test exists that proves the acceptance criteria, and it passes

If the user has not thought about testing, offer a recommendation matched to the project's risk level and get an explicit decision. Every functional requirement needs acceptance criteria specific enough to transcribe into a test, so vague answers here produce untestable requirements later.

Experience and design, in detail

forge-design carries the tier definitions, the brief contents, and the UX requirement rules. This phase produces its inputs:

  • The design tier of each surface, and the one-sentence quality bar. The tier is not a verdict on how much the project matters; it selects which polish checklist the release runs
  • The primary tasks, each with the path you intend and the step count you are aiming at. That number is what the design pass walks later
  • Accessibility target: a named standard and level, or an explicit decision that there is none, with the reason
  • Constraints already in place: brand, an existing component library or design system, platform conventions that are not negotiable
  • UX requirements, numbered UX-001 alongside the functional ones, each with acceptance criteria and a named verification method

Where the user has no view on the design language, propose one the way you propose a stack: two or three concrete options for the visual or output conventions, with a recommendation. Unspecified is not neutral. It becomes whatever the first slice happens to do, and every slice after it inherits that.

For a GUI tier, also say once what the options are for doing the visual part outside this conversation, and let the user pick: Claude Design for exploration, prototypes, and a design system generated from the codebase, with a handoff bundle that comes back here; the figma plugin when a design system already exists there; the frontend-design plugin so generated frontends do not default to the AI house style; or none of them, which is a fine answer for a CLI, a library, or a five-user internal tool. forge-design has the full list and the rules that keep an external tool from becoming a dependency. Whatever the answer, the decisions land in docs/DESIGN.md, and asking before anything about this repository is uploaded to a hosted service is a gate.

Observability, in detail

Every project decides this, including the ones whose answer is "logs to stderr, nothing leaves the machine". Unrecorded is the only wrong answer, because the first slice that runs will otherwise invent it silently.

  • Log destination and format: stderr, file, rotated file, journal, or hosted sink. Structured or human-readable, and if both, which in which environment
  • Levels, and what belongs at each, plus the default level a user or operator runs at
  • What is never logged: secrets, tokens, PII per the data area, whole request bodies
  • Error reporting: does an unhandled failure reach the developer, and by what route. Local log only, a crash file the user sends, or a hosted reporter
  • Telemetry: any usage data leaving the machine. Whether it exists at all, what it contains, that it is opt in, and where that is documented for the user
  • Metrics and health: what a running instance must expose for someone to know it is healthy. Skip it for a local tool, mandatory for a service
  • Audit trail: which actions must be reconstructable afterward, and for how long. That is a retention decision as much as a logging one

Record the outcome in the SRS observability section even when the answer is none, and mirror anything user-visible or privacy-relevant into the data and privacy sections.

Packaging and distribution, in detail

The distribution answer is a decision, not a note. Name the easiest packaging mechanism that fits the recorded usage type, recommend it, name the heavier options as user-owned, and record the chosen mechanism in the SRS so Phase 3 can build it at release time. Forge produces the easy artifact and says what else is worth considering. It never silently does the trust-sensitive parts.

Recommend from this tier, easiest first:

  • A versioned zip or tarball of the build output. The default. Cross-platform, near-zero cost, always available
  • A 7-Zip self-extracting exe. A double-click unpacker for Windows users, when extracting a zip is one step too many
  • An MSI built with WiX. An optional upgrade when a true install experience matters: Add/Remove Programs, Start Menu, repair. Authoring it has a real learning curve, so it is explicitly not the easy default. Recommend it only when the user wants that experience
  • For a CLI tool or a library, a single binary attached to the GitHub Release is the default. Name the natural registry as well (npm, PyPI, crates.io, NuGet, winget) and hand publishing to it to the user

Signing, notarization, app store submission, and auto-update are user-owned. Name them where they apply and keep them out of the recommendation.

Where the tier does not fit, name the case rather than recording something meaningless:

  • Web app or hosted service: no artifact. Packaging there means deployment, which forge does not own. "Not applicable, hosted service" is a complete and valid recorded answer
  • Cross-platform desktop: a Windows artifact helps Windows users only. The macOS and Linux formats (.dmg, .pkg, .deb, AppImage) are user-guided, matching Phase 2 being Windows-specific today. State that limit plainly rather than implying coverage the release will not have

No mechanism here adds an always-on dependency. The zip or tarball path uses tooling already present, so it costs nothing. SFX or MSI tooling is provisioned in Phase 2 only when that mechanism is the one chosen here.

Record the mechanism, the reason it fits the usage type, and the heavier options handed to the user in the SRS distribution section, and the decision itself in docs/DECISIONS.md.

Platform and language selection

Once access surfaces and core scope are settled, do this as an explicit deliverable.

Present two or three candidate stacks. For each:

  • Language, framework, runtime
  • Coverage of each ranked access surface
  • Distribution and update story
  • Ecosystem maturity for the specific integrations in scope
  • Testing story: what the test framework situation looks like, and how painful the integration and end to end layers will be
  • Design and accessibility story: the component ecosystem for each ranked surface, theming, accessibility support, and what a finished surface costs on this stack
  • Toolchain weight on a Windows development workstation
  • What it costs later: hiring, maintenance burden, lock-in
  • Honest downsides, which every real candidate has

Then recommend one in a paragraph and ask the user to confirm or override. Record the outcome in docs/DECISIONS.md. Do not proceed until they have chosen.

Where the surface list is long, check whether a secondary surface would be better served by a thin client or a web view before reaching for a cross-platform framework.

Running registers

Maintain and reprint whenever they change:

  • Open questions: what you still need
  • Assumptions: provisionally taken as true, each with an owner and a consequence if wrong. Prefer asking to assuming, and flag any assumption you do make
  • Risks: what could sink this, with likelihood, impact, mitigation
  • Decisions: what is settled, when, why

Deliverable

At OVERALL CONFIDENCE 95 or higher, write docs/SRS.md:

  1. Purpose and scope
  2. Definitions and terminology
  3. Stakeholders and user roles
  4. Target platforms, ranked, with rationale
  5. Selected technology stack, with rejected alternatives and why they lost
  6. Functional requirements, each with a stable ID (FR-001), a priority, and testable acceptance criteria
  7. Non-functional requirements, same treatment (NFR-001)
  8. Experience requirements, stable IDs (UX-001), each with acceptance criteria and the verification method that settles it, plus the design tier, quality bar, and accessibility target that govern them. The brief itself lives in docs/DESIGN.md
  9. Data model and storage, including retention and privacy
  10. External integrations, one subsection each
  11. Authentication, authorization, secrets handling
  12. Deployment, distribution, update mechanism: including the packaging mechanism chosen, named concretely (versioned zip or tarball, 7-Zip SFX, WiX MSI, single binary release asset, registry publish) or recorded as "not applicable, hosted service", with the heavier options listed as user-owned. Phase 3 reads this line at release time, so an unrecorded answer produces no artifact
  13. Observability, logging, and telemetry: destination and format, levels and the default level, what is never logged and where it is redacted, the error reporting route, whether telemetry exists and its consent model, the metrics or health surface, and the audit trail with its retention
  14. Testing strategy: levels in scope, what is automated versus manual, integration test approach for each external system, test data strategy, coverage policy, and the definition of done for a requirement
  15. Documentation plan: which documents exist, who each is for, which parts need screenshots
  16. Explicit non-goals
  17. Assumptions register
  18. Risk register
  19. Deferred open questions, each with a decision deadline

Every requirement must be verifiable. If you cannot describe how someone would prove it is met, rewrite it or ask. Write acceptance criteria a test can be transcribed from directly: "fast" is not acceptance criteria, "returns in under 200ms at the 95th percentile with 50 concurrent users" is.

Also write docs/DECISIONS.md with every decision from this session, dated, with reasoning.

Then write docs/DESIGN.md from this plugin's templates/DESIGN.md, sized to the design tier: surface inventory, primary tasks with their step counts, the design language decisions, platform conventions to honour, accessibility target, copy and tone rules, and the quality bar. forge-design defines what each section carries. An empty brief is worse than none, because it reads as a decision that was made.

Confirm the hooks can run

Before creating CONTINUE.md, check that Node resolves (node --version), since the hooks that depend on CONTINUE.md start mattering now. If it does not, say so and state the consequence:

Node is not on PATH, so the SessionStart and Stop hooks cannot run. Everything else works, but CONTINUE.md will not be loaded automatically when you open a new session, and you will not be warned when a turn ends with unrecorded work. Cold-start resumption becomes best-effort rather than guaranteed. Install Node, or say the word and I will convert the hooks to PowerShell.

Record the outcome in docs/DECISIONS.md either way, then continue. This is a degradation, not a blocker.

Then create CONTINUE.md at the repository root from this plugin's templates/CONTINUE.md, with:

Phase: 1
Gate:  AWAITING_APPROVAL
Mode:  FLOW

This file drives the /forge detection ladder for the rest of the project's life; without it a later session cannot tell that the spec exists but is unapproved, and will route into the wrong phase. Do not set a Phase 1 Gate: PASSED state, now or later: nothing reads it, and it describes a project that is neither awaiting approval nor bootstrapping. Explicit approval moves the record straight to Phase: 2 with Gate: IN_PROGRESS.

Protect the work before stopping

Phase 1 produces hours of irreplaceable output, so do not leave it unversioned waiting for Phase 2:

  • git init if the directory is not already a repository
  • Write a minimal .gitignore covering OS and editor noise. The full stack-aware version comes in Phase 2
  • Commit docs/SRS.md, docs/DESIGN.md, docs/DECISIONS.md, and CONTINUE.md

No remote yet. Phase 2 asks about public versus private and creates the GitHub repository. This is a local safety net so an accident is recoverable.

Gate

After writing the SRS, stop. Summarize what you wrote, list anything you are still uneasy about, and ask for review.

SRS approval is an always-strict gate and you never self-approve it. Wait for the user to explicitly approve, then tell them to run /forge, which performs the approval transition in one commit and moves to bootstrap.

Living document rule

The SRS stays accurate for the life of the project but changes only by amendment:

  • Append amendments to a CHANGE LOG section at the bottom with date, what changed, and why
  • Requirement IDs are permanent. Supersede them, never renumber
  • Changes to a CRITICAL area need explicit approval before you edit the file

Start now

  1. Restate in two or three sentences what you understand is being asked for
  2. Print your initial confidence readout, mostly zeros
  3. Ask your first round of questions
  4. Explain in one line why those questions come first

Download now (ZIP)

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. tonmoy007/forge-plugins★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository6 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

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.