feature-development
Implement and verify a requested change to software behavior, including its tests and evidence. Use when the requirement is clear and the user asks to build or change behavior; use refactoring when behavior must stay the same and prototyping for throwaway experiments.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- feature-development
- description
- Implement and verify a requested change to software behavior, including its tests and evidence. Use when the requirement is clear and the user asks to build or change behavior; use refactoring when behavior must stay the same and prototyping for throwaway experiments.
03 SKILL.md 正文
<!-- Generated by Paved plugin paved@2.29.0 from core.development.feature-development@0.8.0; edit Paved Core instead. -->
Feature development
When to use
In the planning and implementation phases of the feature workflow, and for any other
change that adds or alters behavior. For restructuring without behavior change use
refactoring; for throwaway exploration use prototyping.
Required context
None beyond the code. Useful when present: the feature map entry for the area, the architecture context (boundaries), the rules in scope and the verification profile, to know which checks exist before promising any.
Preconditions
- The requirement can be written as observable claims ("given X, the system does Y"). If it cannot, ask; do not fill gaps in a requirement with guesses.
- The affected code and the pattern to follow are known. If not, activate
context-discoveryfirst.
Procedure
- Understand the requirement. Write it as claims, including the edge cases the requirement implies (empty input, missing data, limits, failure of a dependency). List what is out of scope.
- Locate the affected code through the feature map or by following the entry point of the behavior. Name every file you expect to change. For technology-specific code, read the relevant knowledge under the selected adapter in the pinned Core runtime; use the project's adapter selection, and do not apply guidance from an unselected technology.
- Plan the proof. Pick a profile check for each claim; plan artifacts and gaps now.
Consider optional
mutationchecks for high-risk behavior or suite evaluation. They support onlytest-effectivenessclaims about selected injected changes, never production behavior or non-regression. - Choose the working capacity. Use the lightest available model that can handle each bounded task reliably. Reserve stronger models for ambiguous requirements, architecture choices, difficult debugging, security-sensitive reasoning and final synthesis. Use cheaper, faster models for mechanical edits, narrow research, test drafting and independent checks when their output is easy to verify. Model names and capabilities vary by host; inspect its available choices instead of assuming a fixed catalog, and do not spend tokens asking a model to repeat context another session already has.
- Delegate only independent work. Split work when tasks have clear inputs and
outputs, can proceed without editing the same files or waiting on each other, and the
expected time saved exceeds the cost of starting and coordinating sessions. Give each
session a narrow brief with relevant context, expected result and constraints. Use
separate sessions for parallel research, isolated test work or independent review;
keep shared-state edits and tightly coupled reasoning in one session. Limit concurrent
sessions to what the host and task can usefully support.
When delegation will save time, register a machine-readable graph with
paved delegation plan --run <id> --file <graph.yaml> --json, bound to the approved plan digest. Include task dependencies, exact read/write paths, output contracts and model policy. Keep concurrent write scopes disjoint. Usepaved delegation ready --run <id> --jsonto see what can start. Show the complete graph to the user and obtain explicit approval beforepaved delegation approve --run <id> --approve --json; approval is tied to the immutable graph digest. Start work only after approval. Paved validates and records the graph; the active host owns native agent/session creation and work. Use Claude Code's native subagents when available. In Codex, use native collaboration tools when available and account for delegated agents inheriting the parent model and execution environment when the host offers no per-task routing. Inspect the host's actual model and reasoning controls; mapeconomy,balancedandfrontierto its lightest suitable options rather than assuming a fixed model catalog. Keep stronger capacity for ambiguity, architecture, difficult debugging and security-sensitive tasks. Treat requested reasoning effort as guidance if the host cannot honor it. Askpaved delegation capabilities --host <claude-code|codex>for host guidance. Claude Code subagents support per-invocation model and effort selection; prefer isolated worktrees for parallel edits. Codex routing and isolation depend on the active host configuration. Host permissions remain authoritative. Start with--isolation shared-workspaceor--isolation isolated-worktree; shared-workspace writers are serialized. Record the actual host/model/effort withpaved delegation start; after the host reports completion, save a concise result under.paved/generated/delegation-results/<run-id>/and usepaved delegation finishwith the result path, outcome, each changed path via repeated--changed-path, and available usage. Paved checks reported paths against exact write scopes; paths from isolated worktrees remain host-reported and require primary-agent diff inspection. For an interrupted session, verify it has stopped beforepaved delegation recover --run <id> --task <id> --confirmed-stopped --note <reason>. Recovery preserves the attempt and makes it retryable. Usage is host-reported, not independently verified. Never store prompts, credentials or raw session ids. Keep short, tightly dependent or shared-file tasks in the primary session when startup and coordination cost exceeds the likely time saved. - Integrate centrally. The primary agent owns the approved plan, resolves conflicts, and checks delegated changes against the plan and repository. It remains responsible for tests, verification, evidence and completion. A delegated result is input, not proof: inspect its diff and rerun affected checks. Do not bypass approvals or change scope without updating the plan.
- Choose the smallest complete solution. Check whether the behavior is needed as stated, then look for a project helper or pattern, platform feature, or installed dependency before adding code or dependencies. Avoid unrequested options, abstractions and future flexibility. Keep the diff readable; finish affected callers, tests and fixtures. Never reduce trust-boundary validation, data-loss handling, error handling, security, accessibility or explicit requirements. For a deliberate shortcut with a known limit, add
shortcut: <limit>; revisit when <condition>in a source comment;paved gardener debtlists tracked markers without writing files. Remove the marker when resolved. - Test clear behavior before implementing it. For a behavior claim with a known result, write and run the lowest-level test first; confirm its intended failure before making the smallest passing change. If behavior is unresolved, prototype or ask first; refactors pin existing behavior with characterization tests.
- Implement in small steps that mirror the chosen sibling: naming, structure, error handling, logging, configuration. The diff contains only what the claims need.
- Complete the tests for every relevant level. Hand tests to the skill for each
level:
unit-testingfor logic,integration-testingfor boundaries with real collaborators,e2e-testingwhen the claim is a user-visible flow. - Run the fast checks after each meaningful step and fix failures before going on.
- Clean up imports, parameters, files and flags the change left unused.
- Self-review the diff with
core.repository.diffand confirm withcore.repository.statusthat no unintended file changed. - Verify and record every required check, then hand over to the
verificationphase.
For a Paved workflow, keep the durable plan at
.paved/documents/plans/<run-id>.md. Put a behavior contract in
.paved/documents/specs/<run-id>.md when the requirement needs one, and a task breakdown
in .paved/documents/tasks/<run-id>.md when it helps execute the plan. Use the same
workflow run id in related filenames and follow core.instructions.workflows for review.
Tools
core.repository.diff for self-review; core.repository.status for unintended files. Build and test
commands come from the Tools named by Checks in the verification profile.
Rules
core.architecture.follow-existing-patterns and
core.architecture.respect-declared-boundaries shape steps 2 and 4.
core.security.no-secrets-in-source covers test data and examples as well as code.
core.quality.evidence-before-completion governs step 9.
Verification
Required: unit. Recommended when the profile has them: build and static-analysis
(they validate, but prove no behavior), integration for changed boundaries, e2e for
changed user flows.
Evidence
A check result for every claim, the diff, and a gap for each claim without an available check.
Completion criteria
- Every claim has a passed check or a supporting artifact, or is an explained gap.
- The diff touches only files named in step 2, or the plan was updated to say why.
- No new static-analysis warnings in the changed files.
Failure modes
| Failure | Signal | Response |
|---|---|---|
| Scope creep | Diff touches files unrelated to the claims | Revert the unrelated parts |
| New pattern by accident | Code differs in style from its siblings | Rewrite to match, or record why not |
| Proof chosen after the fact | Claims appear only after implementation | Re-plan the claims; confirm the tests assert them |
| Requirement grows during work | New claims appear mid-implementation | Stop and confirm them with a human |
References
None.
Paved integration
Use the project-local Paved contract as the source of truth. Discover state with node "${CLAUDE_PLUGIN_ROOT}/scripts/paved.mjs" status --json, load only relevant .paved/project/ context, and invoke verification with node "${CLAUDE_PLUGIN_ROOT}/scripts/paved.mjs" verify --json. Always run it from the repository being worked on, never from the plugin directory. Do not edit generated integration files or bypass Paved lifecycle and ownership checks.
04 同仓库更多 Skills
sample-skill
Does a sample task. Use when a sample is needed.
unexplained-contract
Does a sample task. Use when a sample is needed.
shell-block
Does a sample task. Use when a sample is needed.
project-identifier
Does a sample task. Use when a sample is needed.
oversized
Does a sample task. Use when a sample is needed.
no-activation
Does a sample task.