Implementing Features
With your feature tree planned, agents can start implementing. Manifest tracks state and records history as work progresses.
Feature lifecycle
Features can also be blocked when they depend on other features that must be implemented first. Blocked features automatically return to proposed when all their blockers are implemented.
Finding work
What's next? The agent finds the highest-priority proposed feature from the Next version.
Starting work
Implement OAuth Manifest records:
- State transitions to in_progress (○)
- Other agents see this feature is claimed
Spec gate
start_feature blocks if a leaf feature has no details. The agent
must write a spec first using update_feature before it can begin implementation.
This prevents agents from building without a clear specification.
If the feature has details but lacks acceptance criteria, the agent receives a warning and is encouraged to add criteria before or during implementation.
Testing & proof
Manifest uses test-driven development as a first-class workflow. Agents write
failing tests before implementation and record evidence with prove_feature.
- Write failing tests based on acceptance criteria
- Call
prove_featureto record the red state - Implement the feature
- Call
prove_featureagain to record the green state - Call
complete_feature(requires passing proof)
See Testing & Proof for the full guide on test adapters, the evidence panel, and the completion gate.
Completing work
When the agent finishes, Manifest records:
- State transitions to implemented (●)
- History entry with summary of what was done
- Links to commits from the session
- Test evidence from
prove_featurerecordings
Feature: OAuth Integration (●)
History:
2024-03-20 - Implemented Google OAuth with token refresh
- Added OAuth config and providers
- Built token storage with encryption
Commits: abc123, def456 Proposed changes
Agents can suggest spec changes via desired_details for human
review rather than modifying the spec directly. The proposed changes appear in
the app's Diff tab on the feature detail view, where you can
accept or discard them.
update_feature(
feature_id: "...",
desired_details: "## Story\nAs a user, I can..." // proposed, not applied
) Slash commands
Claude Code plugin provides shortcuts:
| Command | Description |
|---|---|
/manifest:next | Show highest-priority feature ready for work |
/manifest:feature [query] | Search for and display feature details |
/manifest:start [feature] | Begin work on a feature (or next priority if omitted) |
/manifest:complete | Complete current in-progress feature with summary |
Next step
Continue to Testing & Proof.