Keep track of Chatto's features as Feature Decision Records (FDRs) — one structured document per feature capturing behavior, design decisions, and rationale. Replaces the older agent-docs/features/ system.
58
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/fdr/SKILL.mdManage Chatto's features as structured markdown documents in docs/fdr/. Each FDR captures what a feature does from a user perspective and the design decisions that shaped it, with rationale.
An FDR is a single source of truth for one feature. It answers:
FDRs sit alongside ADRs. The split:
A single feature may cite several ADRs; a single ADR may underpin several FDRs. That's fine and expected.
grep for those things.If you're writing proto definitions, ConnectRPC handler details, or Go/TypeScript code in an FDR, you're going too deep. Stop and pull back to behavior + rationale.
docs/fdr/
├── INDEX.md # Index with TOC (read this first)
├── FDR-001-roles-and-permissions.md # Individual FDR
├── FDR-002-replies-and-threads.md
└── ...FDR-{NNN}-{kebab-case-slug}.mdNNN: Zero-padded three-digit number, sequential# FDR-{NNN}: {Feature Name}
**Status:** Active
**Last reviewed:** {YYYY-MM-DD}
## Overview
One paragraph: what the feature is, who uses it, and why it exists.
## Behavior
Bullet points describing user-visible behavior. No implementation details.
## Design Decisions
Numbered list. Each entry calls out a non-obvious choice and *why*.
### 1. {Short decision title}
**Decision:** What we chose.
**Why:** The reasoning. Cite an ADR if there is one.
**Tradeoff:** What this costs us.
## Permissions
Permission strings that gate this feature, with one-line descriptions.
Omit this section for features that aren't permission-gated.
## Related
- **ADRs:** ADR-XYZ, ADR-ABC
- **FDRs:** FDR-NNN
## Open Questions
Optional. Known design gaps, future considerations, or things we
deliberately haven't decided yet. Delete this section if there's
nothing to say.docs/fdr/INDEX.md to see the current list of FDRsdocs/fdr/INDEX.md to determine the next available numberdocs/fdr/INDEX.mdRelated → FDRs line.docs/fdr/INDEX.mdWhen a feature is removed:
INDEX.md. The git history preserves it if anyone needs to look back.Retired and keep it only if the prior design is notable and likely to inform future work (e.g., a system that was deliberately rolled back and might be reconsidered). Add a top-level note explaining why it was retired.message.react) — they're part of the feature design. But don't describe how permission checks are implemented.When invoked without arguments, audit every FDR in docs/fdr/ against the codebase.
When invoked with a slug (e.g., /fdr reactions), audit only that FDR.
When invoked with new <feature-slug> (e.g., /fdr new voice-calls), research the feature and draft a new FDR. Always ask the user to confirm the slug, number, and scope before writing.
For each FDR being audited, launch a dedicated Explore subagent that:
cli/internal/core/permissions.go?Run audits in parallel via the Agent tool when auditing multiple FDRs.
docs/fdr/INDEX.mdWhen auditing or creating an FDR, verify:
cli/internal/core/permissions.goINDEX.md lists this FDR with the correct title| # | Feature | Status | Last reviewed |
|---|---------|--------|---------------|
| [FDR-001](FDR-001-slug.md) | Title of the feature | Active | 2026-05-19 |65f65c3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.