一键导入
add-adr
Write a new Architecture Decision Record (ADR) using the project's numbering convention. Register it in INDEX.md and cross-reference affected module plans.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write a new Architecture Decision Record (ADR) using the project's numbering convention. Register it in INDEX.md and cross-reference affected module plans.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Add admin dashboard CRUD (list/detail/new/edit/delete) for a new entity following the Jobs and About patterns. Covers migration, DB helpers, React components, and API endpoints.
Create a drift log (DRL) documenting an incident, unexpected finding, or post-mortem. Register it in INDEX.md and cross-reference affected modules.
Create a numbered SQLite migration file and wire it into the MIGRATIONS array in db.rs. Follows the NNN_description.sql naming convention.
Create a new plan module file following CONVENTIONS.md template, register the domain code, and update INDEX.md. Keeps the plan system as the single source of truth.
Add a new Axum JSON API endpoint and/or React page route following the services/ui + web/ SPA patterns. Handles handler creation, router registration, and React component wiring.
Add a new AWS Secrets Manager secret following the W-SEC policy. Covers xtask registration, infra HCL, IAM policy, Lambda env wiring, and the put command.
| name | add-adr |
| description | Write a new Architecture Decision Record (ADR) using the project's numbering convention. Register it in INDEX.md and cross-reference affected module plans. |
| argument-hint | [short-title] |
Document a significant architectural decision. ADRs are immutable records — once written, they are amended only with a new ADR (not edited in place).
Current highest: ADR-009 (API Gateway HTTP API for POST /api/contact)
Check plans/INDEX.md → "ADR Index" table for the current list. Next number: ADR-010.
Format: zero-padded 3 digits → ADR-010
Path: plans/adr/ADR-<NNN>-<short-title>.md
<NNN>: zero-padded 3 digits<short-title>: kebab-case, ≤5 wordsplans/adr/ADR-010-sqlite-wal-mode.mdTemplate:
# ADR-<NNN>: <Human Readable Title>
**Date:** YYYY-MM-DD
**Status:** Accepted | Supersedes ADR-XXX | Superseded by ADR-YYY
**Affected modules:** W-XXX, W-YYY
## Context
What situation or problem prompted this decision? What constraints exist?
Be specific — what options were considered?
## Decision
What was decided, and why? State it clearly in one sentence, then expand.
> We will use X instead of Y because Z.
## Consequences
### Positive
- Benefit 1
- Benefit 2
### Negative / Trade-offs
- Cost 1
- Cost 2
### Neutral
- Side effect that is neither good nor bad
## Alternatives Considered
| Option | Rejected because |
|--------|-----------------|
| Option A | ... |
| Option B | ... |
## Cross-References
- → ADR-NNN (if superseding)
- → W-XXX (affected module)
- → DRL-YYYY-MM-DD-topic (if triggered by an incident)
File: plans/INDEX.md → "ADR Index" table
Add a new row:
| ADR-<NNN> | <Short human title> | W-XXX, W-YYY |
For each module listed in "Affected modules":
File: plans/modules/<module>.md → section W-XXX.6 Cross-References
→ ADR-<NNN> (<reason, e.g. "justfile interface">)
**Status:** Accepted → **Status:** Superseded by ADR-<NNN>→ ADR-<NNN> (supersedes this)(superseded by ADR-<NNN>) in the old row| ID | Title |
|---|---|
| ADR-001 | justfile Is the Only Interface |
| ADR-002 | SQLite Over PostgreSQL |
| ADR-003 | Lambda Function URL (No API Gateway) |
| ADR-004 | Dual-Mode Entry Point |
| ADR-005 | Zero-Cost Philosophy |
| ADR-006 | EFS + SQLite + S3 Backup |
| ADR-007 | OpenTofu Over Terraform |
| ADR-008 | Cognito Authentication for Admin Dashboard |
| ADR-009 | API Gateway HTTP API for POST /api/contact |
plans/adr/ — all ADR filesplans/INDEX.md — ADR index tableplans/modules/ — cross-reference in affected module plans