functional-spec
Write durable Functional Specifications that describe desired behavior, constraints, and acceptance criteria without coupling the document to implementation…
Skill by skuridin
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/skuridin-functional-spec
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/functional-spec
What's inside
- Skill name
functional-spec- Description
- Write durable Functional Specifications that describe desired behavior, constraints, and acceptance criteria without coupling the document to implementation details. Use when drafting functional specs, product requirements, or outcome-focused design documents.
- License
- Apache-2.0
- Instructions
- 222 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Functional Specification Skill Use this skill when the user wants a Functional Specification, product requirements document, or other outcome-focused spec that should remain valid even if the implementation changes. ## Core principle Write the destination, not the journey. - Describe what must be true for users, operators, or external systems. - Describe observable behavior, policies, constraints, and acceptance criteria. - Avoid locking the document to architecture, code structure, vendors, or execution plans unless those details are part of the external contract. The spec should still read as correct if the team later changes the tech stack, data model, service boundaries, UI framework, or rollout approach. ## What a good Functional Specification contains - Problem statement - Goals and intended outcomes - Scope and non-goals - Actors or user types - Functional requirements - Business rules and invariants - User-visible states and transitions - Inputs, outputs, and externally visible interfaces - Edge cases and failure behavior from the user's perspective - Acceptance criteria - Assumptions, dependencies, and open questions ## What to avoid Do not include these unless they are externally binding requirements: - Internal architecture - Database tables or schemas - Queues, cron jobs, workers, or event buses - Class names, hooks, services, modules, or file structure - Endpoints or RPC method names that are not part of a published contract - Step-by-step implementation plans - Team task breakdowns, milestones, or rollout phases - Test implementation details - Monitoring or instrumentation mechanics - One specific technical approach presented as if it were the requirement If a detail could change without changing the promised behavior, it probably does not belong in the Functional Specification. ## Durable writing test Before keeping any sentence, ask: 1. Would this still be true if the implementation were rewritten from scratch? 2. Is this observable by a user, operator, admin, partner, or external system? 3. Is this a requirement, or just one possible solution? If the sentence fails that test, rewrite or remove it. ## Rewrite implementation details into functional statements Translate brittle wording into durable wording. - Instead of: "Use Redis to enforce rate limits." - Write: "Requests beyond the allowed threshold are blocked consistently across all application instances." - Instead of: "Create a retry queue for failed sync jobs." - Write: "Transient synchronization failures are retried automatically before the user is asked to act again." - Instead of: "Store audit rows in Postgres." - Write: "Authorized administrators can review a complete history of relevant changes." - Instead of: "Add a webhook to notify downstream systems." - Write: "Connected external systems are notified when the status changes within the required time window." - Instead of: "Call `/v2/refunds` and set `refund_state=pending`." - Write: "Authorized support staff can initiate a refund, and the refund is shown to the customer as pending until it is finalized." ## Clarify only what matters Ask short questions only when the destination is underspecified. Prioritize questions like: - Who is the actor? - What must they be able to do, see, or prevent? - What must always be true? - What is explicitly out of scope? - How will we know the requirement is satisfied? - Are there external contracts, regulatory rules, or hard deadlines that are part of the requirement? If exact values are unknown, do not invent them. Mark them as open questions. ## Writing rules - Prefer "must" for required behavior and "must not" for prohibited behavior. - Make each requirement independently testable. - Use stable domain language, not temporary project code names. - Separate policy from implementation. - State thresholds, limits, and timing expectations explicitly when they matter. - Describe failures in terms of what the actor experiences and what the system guarantees. - Keep requirements atomic. Split compound requirements into smaller numbered items. - Use examples only to illustrate behavior, not to narrow the requirement accidentally. ## Recommended structure Use this structure unless the user asks for a different format. ```markdown # <Feature or capability name> ## Summary <One short paragraph describing the outcome this feature must deliver.> ## Problem <What problem exists today and who it affects.> ## Goals - <Desired outcome> - <Desired outcome> ## Non-Goals
From skuridin/agent-stuff, Apache-2.0.
More from skuridin/agent-stuff
- 0.570score
address-review
skuridin
Handle review comments on my own pull request.
SkillAFreshness: AClaude Code +9 - 0.561score
publish-html-report
skuridin
Use this skill whenever you create or finish a standalone HTML report or presentation intended for the requester to view in a browser.
SkillAFreshness: AClaude Code +9 - 0.529score
pr-review-bot
skuridin
Unattended thermo-nuclear PR review loop.
SkillBFreshness: BClaude Code +9 - 0.526score
thermo-nuclear-pr-review
skuridin
Thermo-nuclear code quality review of a GitHub pull request.
SkillBFreshness: BClaude Code +9 - 0.474score
panel-review
skuridin
Use this skill when reviewing code, PRs, files, or directories as an expert panel; supports interactive walkthroughs and opt-in draft GitHub reviews for…
SkillCFreshness: CClaude Code +9 - 0.474score
bearcli
skuridin
Use Bear CLI to read, search, create, and safely edit Bear notes from the terminal.
SkillCFreshness: CClaude Code +9 - 0.469score
frontend-instrumented-debugging
skuridin
Use this skill when debugging hard JavaScript frontend bugs where runtime behavior is unclear, especially async flows, state gates, retries, effects…
SkillCFreshness: CClaude Code +9 - 0.455score
apple-container
skuridin
Use this skill when the user wants to work with Apple's `container` CLI for macOS — building, running, or managing lightweight Linux containers using…
SkillCFreshness: CClaude Code +9 - 0.445score
grill-me
skuridin
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree.
SkillCFreshness: CClaude Code +9 - 0.409score
pr-create
skuridin
Create GitHub pull requests with conventional commit titles and clear, non-technical descriptions answering what changed and why.
SkillDFreshness: DClaude Code +9 - 0.409score
gondolin-exec
skuridin
Run commands in an isolated, disposable Linux VM using Gondolin CLI.
SkillDFreshness: DClaude Code +9 - 0.409score
vertical-slice-tracker
skuridin
Break implementation work into end-to-end vertical slices, create or update a markdown task tracker when the user asks for written planning, and keep each…
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 2, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/skuridin/agent-stuff
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from skuridin
- 0.570score
address-review
skuridin
Handle review comments on my own pull request.
SkillAFreshness: AClaude Code +9 - 0.561score
publish-html-report
skuridin
Use this skill whenever you create or finish a standalone HTML report or presentation intended for the requester to view in a browser.
SkillAFreshness: AClaude Code +9 - 0.529score
pr-review-bot
skuridin
Unattended thermo-nuclear PR review loop.
SkillBFreshness: BClaude Code +9 - 0.526score
thermo-nuclear-pr-review
skuridin
Thermo-nuclear code quality review of a GitHub pull request.
SkillBFreshness: BClaude Code +9 - 0.474score
bearcli
skuridin
Use Bear CLI to read, search, create, and safely edit Bear notes from the terminal.
SkillCFreshness: CClaude Code +9 - 0.474score
panel-review
skuridin
Use this skill when reviewing code, PRs, files, or directories as an expert panel; supports interactive walkthroughs and opt-in draft GitHub reviews for…
SkillCFreshness: CClaude Code +9
Cite this page
functional-spec skill. Agent Mart. https://agentmart.dev/skills/skuridin-functional-spec (last updated 2026-10-24)