{
  "schemaVersion": "1.0",
  "item": {
    "slug": "feature-specification",
    "name": "Feature Specification",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/wpank/feature-specification",
    "canonicalUrl": "https://clawhub.ai/wpank/feature-specification",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/feature-specification",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=feature-specification",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/feature-specification"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/feature-specification",
    "agentPageUrl": "https://openagent3.xyz/skills/feature-specification/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feature-specification/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feature-specification/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Feature Specification (Meta-Skill)",
        "body": "Bridge persona documentation and development. This skill translates user needs, pain points, and journeys identified in persona docs into structured, implementable feature specifications with clear acceptance criteria."
      },
      {
        "title": "OpenClaw / Moltbot / Clawbot",
        "body": "npx clawhub@latest install feature-specification"
      },
      {
        "title": "Purpose",
        "body": "Persona docs define who and why. Feature specs define what and how well. This skill closes the gap:\n\nExtracts actionable features from persona pain points and journeys\nStructures requirements so developers know exactly what to build\nDefines acceptance criteria so QA knows exactly what to verify\nPrevents scope ambiguity before a single line of code is written"
      },
      {
        "title": "When to Use",
        "body": "After persona docs exist (docs/PERSONA.md or docs/personas/)\nBefore development begins on a new feature or product\nWhen a feature request lacks clear acceptance criteria\nWhen stakeholders disagree on what \"done\" means\nWhen converting user feedback into development work"
      },
      {
        "title": "Feature Spec Template",
        "body": "Use this structure for every feature specification. Place specs in docs/specs/ or docs/features/.\n\n# Feature: [Feature Name]\n\n## Metadata\n- **Priority:** [Must / Should / Could / Won't]\n- **Target Persona:** [Persona name from persona docs]\n- **Status:** Draft | Review | Approved | In Progress | Complete\n- **Estimated Effort:** [T-shirt size: XS / S / M / L / XL]\n\n## Problem Statement\n[Directly reference the persona pain point this feature addresses.\nQuote or link to the relevant section of persona docs.]\n\n## Solution Description\n[High-level description of what the feature does and how it solves\nthe problem. 2-4 sentences. No implementation details.]\n\n## User Stories\n\n- As a [persona], I want [action], so that [benefit].\n- As a [persona], I want [action], so that [benefit].\n\n## Acceptance Criteria\n\n### Scenario: [Happy path description]\n- **Given** [precondition]\n- **When** [action]\n- **Then** [expected result]\n\n### Scenario: [Alternative path description]\n- **Given** [precondition]\n- **When** [action]\n- **Then** [expected result]\n\n### Scenario: [Error case description]\n- **Given** [precondition]\n- **When** [invalid action]\n- **Then** [error handling result]\n\n## Edge Cases\n- [ ] [Edge case 1 — description and expected behavior]\n- [ ] [Edge case 2 — description and expected behavior]\n\n## Non-Functional Requirements\n- **Performance:** [Response time, throughput, load targets]\n- **Accessibility:** [WCAG level, keyboard nav, screen reader support]\n- **Security:** [Auth requirements, data sensitivity, input validation]\n- **Browser/Device:** [Support matrix]\n\n## Dependencies\n- [Feature or system this depends on]\n- [External API or service required]\n\n## Out of Scope\n- [Explicitly list what this feature does NOT include]\n- [Prevents scope creep during development]\n\n## Design References\n- [Link to mockups, wireframes, or design system components]\n- [Screenshots or diagrams if available]"
      },
      {
        "title": "Writing Effective User Stories",
        "body": "User stories connect persona needs to developer tasks. Apply the INVEST criteria:\n\nCriterionMeaningTest QuestionIndependentNo ordering dependency on othersCan this be built and released alone?NegotiableDetails can be discussedIs this a conversation starter, not a contract?ValuableDelivers value to the personaWould the persona care about this?EstimableTeam can estimate effortIs the scope clear enough to size?SmallFits in a single iterationCan this ship in one sprint?TestableClear pass/fail verificationCan QA write a test for this?"
      },
      {
        "title": "Good vs Bad User Stories",
        "body": "BadWhy It's BadGood\"Users can log in\"No persona, no benefit\"As a returning customer, I want to log in with my email, so that I can access my order history\"\"Make it fast\"Vague, untestable\"As a mobile user on 3G, I want the product list to load in under 2s, so that I don't abandon the page\"\"Add admin panel\"Solution-first, no problem\"As a store manager, I want to update product prices without developer help, so that I can respond to market changes daily\"\"Handle errors\"No specificity\"As a checkout user, I want clear feedback when my payment fails, so that I know whether to retry or use a different card\"\"Implement caching\"Implementation detail, not a story\"As a repeat visitor, I want previously viewed pages to load instantly, so that browsing feels responsive\""
      },
      {
        "title": "Pattern 1: Happy Path",
        "body": "Given a logged-in customer with items in their cart\nWhen they click \"Checkout\"\nThen they are taken to the payment page with their cart summary visible"
      },
      {
        "title": "Pattern 2: Boundary Conditions",
        "body": "Given a cart with 100 items (maximum allowed)\nWhen the user tries to add another item\nThen they see \"Cart limit reached — remove an item to add a new one\"\nAnd the item is NOT added to the cart"
      },
      {
        "title": "Pattern 3: Error Cases",
        "body": "Given a user submitting the registration form\nWhen the email field contains \"not-an-email\"\nThen the form shows inline validation: \"Enter a valid email address\"\nAnd the form is NOT submitted\nAnd focus moves to the email field"
      },
      {
        "title": "Pattern 4: State Transitions",
        "body": "Given an order with status \"Processing\"\nWhen the warehouse marks it as shipped\nThen the order status changes to \"Shipped\"\nAnd the customer receives a shipping confirmation email within 5 minutes\nAnd the tracking number is visible on the order detail page"
      },
      {
        "title": "Pattern 5: Negative / Security",
        "body": "Given a user who is NOT the account owner\nWhen they attempt to access /account/settings via direct URL\nThen they receive a 403 Forbidden response\nAnd the access attempt is logged"
      },
      {
        "title": "Priority Framework",
        "body": "Apply MoSCoW prioritization, anchored to persona impact:\n\nPriorityLabelDefinitionPersona AlignmentP0MustProduct is unusable without thisBlocks the persona's primary goalP1ShouldSignificant value, painful to deferAddresses a top-3 pain pointP2CouldNice to have, enhances experienceImproves a secondary journeyP3Won'tExplicitly deferred (this release)Low-frequency need or niche scenario\n\nPrioritization process:\n\nList all candidate features\nMap each to a persona pain point or journey step\nAssign MoSCoW based on persona impact, not technical interest\nValidate: Do all P0s together form a usable product for the target persona?\nCut scope until P0s are achievable in the timeline"
      },
      {
        "title": "Specification Anti-Patterns",
        "body": "Anti-PatternExampleFixVague requirement\"System should be user-friendly\"Define measurable criteria: \"Task completion in < 3 clicks\"Missing edge casesOnly specifying the happy pathAdd boundary, error, and concurrent-use scenariosNo acceptance criteria\"Implement search\"Add Given/When/Then for each scenarioSolution masquerading as need\"Use Redis for caching\"State the need: \"Repeat queries return in < 50ms\"Missing personas\"Users can export data\"Specify which persona and why they exportUnbounded scope\"Support all file formats\"List exact formats: \"PDF, CSV, XLSX\"Implicit assumptionsAssuming auth exists without stating itList all dependencies explicitly"
      },
      {
        "title": "Integration with Workflow",
        "body": "Feature specs connect to the broader development process:\n\nPersona docs (docs/PERSONA.md) — Source of truth for user needs\nFeature specs (docs/specs/) — This skill's output; the development contract\nTask creation — Each spec becomes one or more development tasks\nImplementation — Developers reference the spec for scope and criteria\nTesting — QA derives test cases directly from acceptance criteria\nReview — PR reviews check that acceptance criteria are met\n\nWhen using with the /new-feature command or similar workflows:\n\nRead the relevant persona doc first\nGenerate the spec using this template\nValidate acceptance criteria cover happy path, errors, and edge cases\nConfirm priority with stakeholders before development begins"
      },
      {
        "title": "NEVER Do",
        "body": "NEVER write a spec without referencing a persona — every feature exists for a user\nNEVER skip acceptance criteria — \"obvious\" requirements cause the most bugs\nNEVER use vague qualifiers as requirements — \"fast\", \"easy\", \"intuitive\" are not testable\nNEVER combine multiple features in one spec — one spec, one feature, one clear scope\nNEVER specify implementation details in user stories — describe the what, not the how\nNEVER mark a spec as Approved without edge cases documented — happy paths are the easy part\nNEVER assume dependencies are obvious — list every system, API, feature, and data source the spec relies on"
      }
    ],
    "body": "Feature Specification (Meta-Skill)\n\nBridge persona documentation and development. This skill translates user needs, pain points, and journeys identified in persona docs into structured, implementable feature specifications with clear acceptance criteria.\n\nInstallation\nOpenClaw / Moltbot / Clawbot\nnpx clawhub@latest install feature-specification\n\nPurpose\n\nPersona docs define who and why. Feature specs define what and how well. This skill closes the gap:\n\nExtracts actionable features from persona pain points and journeys\nStructures requirements so developers know exactly what to build\nDefines acceptance criteria so QA knows exactly what to verify\nPrevents scope ambiguity before a single line of code is written\nWhen to Use\nAfter persona docs exist (docs/PERSONA.md or docs/personas/)\nBefore development begins on a new feature or product\nWhen a feature request lacks clear acceptance criteria\nWhen stakeholders disagree on what \"done\" means\nWhen converting user feedback into development work\nFeature Spec Template\n\nUse this structure for every feature specification. Place specs in docs/specs/ or docs/features/.\n\n# Feature: [Feature Name]\n\n## Metadata\n- **Priority:** [Must / Should / Could / Won't]\n- **Target Persona:** [Persona name from persona docs]\n- **Status:** Draft | Review | Approved | In Progress | Complete\n- **Estimated Effort:** [T-shirt size: XS / S / M / L / XL]\n\n## Problem Statement\n[Directly reference the persona pain point this feature addresses.\nQuote or link to the relevant section of persona docs.]\n\n## Solution Description\n[High-level description of what the feature does and how it solves\nthe problem. 2-4 sentences. No implementation details.]\n\n## User Stories\n\n- As a [persona], I want [action], so that [benefit].\n- As a [persona], I want [action], so that [benefit].\n\n## Acceptance Criteria\n\n### Scenario: [Happy path description]\n- **Given** [precondition]\n- **When** [action]\n- **Then** [expected result]\n\n### Scenario: [Alternative path description]\n- **Given** [precondition]\n- **When** [action]\n- **Then** [expected result]\n\n### Scenario: [Error case description]\n- **Given** [precondition]\n- **When** [invalid action]\n- **Then** [error handling result]\n\n## Edge Cases\n- [ ] [Edge case 1 — description and expected behavior]\n- [ ] [Edge case 2 — description and expected behavior]\n\n## Non-Functional Requirements\n- **Performance:** [Response time, throughput, load targets]\n- **Accessibility:** [WCAG level, keyboard nav, screen reader support]\n- **Security:** [Auth requirements, data sensitivity, input validation]\n- **Browser/Device:** [Support matrix]\n\n## Dependencies\n- [Feature or system this depends on]\n- [External API or service required]\n\n## Out of Scope\n- [Explicitly list what this feature does NOT include]\n- [Prevents scope creep during development]\n\n## Design References\n- [Link to mockups, wireframes, or design system components]\n- [Screenshots or diagrams if available]\n\nWriting Effective User Stories\n\nUser stories connect persona needs to developer tasks. Apply the INVEST criteria:\n\nCriterion\tMeaning\tTest Question\nIndependent\tNo ordering dependency on others\tCan this be built and released alone?\nNegotiable\tDetails can be discussed\tIs this a conversation starter, not a contract?\nValuable\tDelivers value to the persona\tWould the persona care about this?\nEstimable\tTeam can estimate effort\tIs the scope clear enough to size?\nSmall\tFits in a single iteration\tCan this ship in one sprint?\nTestable\tClear pass/fail verification\tCan QA write a test for this?\nGood vs Bad User Stories\nBad\tWhy It's Bad\tGood\n\"Users can log in\"\tNo persona, no benefit\t\"As a returning customer, I want to log in with my email, so that I can access my order history\"\n\"Make it fast\"\tVague, untestable\t\"As a mobile user on 3G, I want the product list to load in under 2s, so that I don't abandon the page\"\n\"Add admin panel\"\tSolution-first, no problem\t\"As a store manager, I want to update product prices without developer help, so that I can respond to market changes daily\"\n\"Handle errors\"\tNo specificity\t\"As a checkout user, I want clear feedback when my payment fails, so that I know whether to retry or use a different card\"\n\"Implement caching\"\tImplementation detail, not a story\t\"As a repeat visitor, I want previously viewed pages to load instantly, so that browsing feels responsive\"\nAcceptance Criteria Patterns\nPattern 1: Happy Path\nGiven a logged-in customer with items in their cart\nWhen they click \"Checkout\"\nThen they are taken to the payment page with their cart summary visible\n\nPattern 2: Boundary Conditions\nGiven a cart with 100 items (maximum allowed)\nWhen the user tries to add another item\nThen they see \"Cart limit reached — remove an item to add a new one\"\nAnd the item is NOT added to the cart\n\nPattern 3: Error Cases\nGiven a user submitting the registration form\nWhen the email field contains \"not-an-email\"\nThen the form shows inline validation: \"Enter a valid email address\"\nAnd the form is NOT submitted\nAnd focus moves to the email field\n\nPattern 4: State Transitions\nGiven an order with status \"Processing\"\nWhen the warehouse marks it as shipped\nThen the order status changes to \"Shipped\"\nAnd the customer receives a shipping confirmation email within 5 minutes\nAnd the tracking number is visible on the order detail page\n\nPattern 5: Negative / Security\nGiven a user who is NOT the account owner\nWhen they attempt to access /account/settings via direct URL\nThen they receive a 403 Forbidden response\nAnd the access attempt is logged\n\nPriority Framework\n\nApply MoSCoW prioritization, anchored to persona impact:\n\nPriority\tLabel\tDefinition\tPersona Alignment\nP0\tMust\tProduct is unusable without this\tBlocks the persona's primary goal\nP1\tShould\tSignificant value, painful to defer\tAddresses a top-3 pain point\nP2\tCould\tNice to have, enhances experience\tImproves a secondary journey\nP3\tWon't\tExplicitly deferred (this release)\tLow-frequency need or niche scenario\n\nPrioritization process:\n\nList all candidate features\nMap each to a persona pain point or journey step\nAssign MoSCoW based on persona impact, not technical interest\nValidate: Do all P0s together form a usable product for the target persona?\nCut scope until P0s are achievable in the timeline\nSpecification Anti-Patterns\nAnti-Pattern\tExample\tFix\nVague requirement\t\"System should be user-friendly\"\tDefine measurable criteria: \"Task completion in < 3 clicks\"\nMissing edge cases\tOnly specifying the happy path\tAdd boundary, error, and concurrent-use scenarios\nNo acceptance criteria\t\"Implement search\"\tAdd Given/When/Then for each scenario\nSolution masquerading as need\t\"Use Redis for caching\"\tState the need: \"Repeat queries return in < 50ms\"\nMissing personas\t\"Users can export data\"\tSpecify which persona and why they export\nUnbounded scope\t\"Support all file formats\"\tList exact formats: \"PDF, CSV, XLSX\"\nImplicit assumptions\tAssuming auth exists without stating it\tList all dependencies explicitly\nIntegration with Workflow\n\nFeature specs connect to the broader development process:\n\nPersona docs (docs/PERSONA.md) — Source of truth for user needs\nFeature specs (docs/specs/) — This skill's output; the development contract\nTask creation — Each spec becomes one or more development tasks\nImplementation — Developers reference the spec for scope and criteria\nTesting — QA derives test cases directly from acceptance criteria\nReview — PR reviews check that acceptance criteria are met\n\nWhen using with the /new-feature command or similar workflows:\n\nRead the relevant persona doc first\nGenerate the spec using this template\nValidate acceptance criteria cover happy path, errors, and edge cases\nConfirm priority with stakeholders before development begins\nNEVER Do\nNEVER write a spec without referencing a persona — every feature exists for a user\nNEVER skip acceptance criteria — \"obvious\" requirements cause the most bugs\nNEVER use vague qualifiers as requirements — \"fast\", \"easy\", \"intuitive\" are not testable\nNEVER combine multiple features in one spec — one spec, one feature, one clear scope\nNEVER specify implementation details in user stories — describe the what, not the how\nNEVER mark a spec as Approved without edge cases documented — happy paths are the easy part\nNEVER assume dependencies are obvious — list every system, API, feature, and data source the spec relies on"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wpank/feature-specification",
    "publisherUrl": "https://clawhub.ai/wpank/feature-specification",
    "owner": "wpank",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/feature-specification",
    "downloadUrl": "https://openagent3.xyz/downloads/feature-specification",
    "agentUrl": "https://openagent3.xyz/skills/feature-specification/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feature-specification/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feature-specification/agent.md"
  }
}