Traceable Development Lifecycle (TDL) Skill
Overview
TDL is a template-based development process that ensures complete traceability from requirements to implementation. It supports parallel development by multiple developers or AI agents through random ID generation and distributed traceability.
Key Features
- •Random Base36 IDs: 5-character IDs (e.g.,
a3bf2) prevent conflicts in parallel development - •Distributed Traceability: Each document maintains its own Links section - no central tracking file
- •5-Phase Workflow: Analysis → Requirements → ADR → Design → Plan & Execution
- •Document Templates: Standardized templates for all document types
When to Use This Skill
Use this skill when:
- •Starting a new project and want to establish traceability from the beginning
- •Improving existing projects to add or enhance traceability practices
- •Creating documentation (Analysis, Requirements, ADRs, Design, Plans)
- •Working in parallel with other developers or AI agents
- •Troubleshooting production issues and need to trace back to requirements/design
- •Conducting requirement analysis and tracking implementation coverage
Interactive Mode (Claude Code only)
When running in Claude Code and the user's intent is unclear, use AskUserQuestion tool to clarify:
Document Type (if not specified in the user's request):
- •Question: "What type of TDL document do you want to create?"
- •Header: "Doc Type"
- •Options:
- •"Analysis (AN-)" - Problem exploration and discovery
- •"Requirement (FR/NFR-)" - Formal specification with acceptance criteria
- •"ADR (ADR-)" - Architecture/design decision record
- •"Task (T-)" - Implementation plan with design.md and plan.md
Requirement Type (when creating a requirement):
- •Question: "What type of requirement is this?"
- •Header: "Req Type"
- •Options:
- •"FR - Functional Requirement (Recommended)" - Feature or behavior specification
- •"NFR - Non-Functional Requirement" - Performance, security, scalability, etc.
NFR Category (when creating a non-functional requirement):
- •Question: "What category does this NFR belong to?"
- •Header: "Category"
- •Options:
- •"Performance" - Response time, throughput
- •"Security" - Authentication, authorization, data protection
- •"Scalability" - Load handling, growth capacity
- •"Reliability" - Availability, fault tolerance
- •If user needs a different category, they can specify via the "Other" option
ADR Template (when creating an ADR):
- •Question: "Which ADR template should be used?"
- •Header: "Template"
- •Options:
- •"Full ADR (Recommended)" - Comprehensive template for significant decisions
- •"Lite ADR" - Simplified template for tactical decisions
TDL Workflow Phases
┌─────────────┐ ┌──────────────┐ ┌─────────┐ ┌────────┐ ┌──────────────────┐
│ Analysis │───▶│ Requirements │───▶│ ADR │───▶│ Design │───▶│ Plan & Execution │
│ (AN-) │ │ (FR/NFR) │ │ (ADR-) │ │ │ │ │
└─────────────┘ └──────────────┘ └─────────┘ └────────┘ └──────────────────┘
│ │ │ │ │
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Explore Formalize Document Technical Implementation
problem what/why decisions design phases
Phase 1: Analysis (AN-xxxxx)
Purpose: Explore problem space and discover requirements
Output: docs/analysis/AN-xxxxx-topic.md
python scripts/create_analysis.py "User Authentication Flow"
Lifecycle: Draft → Active → Complete → Archived (after requirements formalized)
Phase 2: Requirements (FR-xxxxx / NFR-xxxxx)
Purpose: Formalize what needs to be built with measurable acceptance criteria
Output:
- •Functional:
docs/requirements/FR-xxxxx-topic.md - •Non-Functional:
docs/requirements/NFR-xxxxx-topic.md
python scripts/create_requirement.py "User Authentication" --type FR python scripts/create_requirement.py "API Response Time" --type NFR --category Performance
Lifecycle: Proposed → Accepted → Implemented → Verified → (Deprecated)
Phase 3: Architecture Decision Records (ADR-xxxxx)
Purpose: Document important design decisions and their rationale
Output: docs/adr/ADR-xxxxx-topic.md
python scripts/create_adr.py "Use PostgreSQL for data storage" python scripts/create_adr.py "Minor API change" --lite # For tactical decisions
Lifecycle: Proposed → Accepted | Rejected → (Deprecated | Superseded by ADR-xxxxx)
Phase 4 & 5: Design and Plan (T-xxxxx)
Purpose: Technical design and phased implementation plan
Output: docs/tasks/T-xxxxx-topic/
- •
design.md: How to implement (technical design) - •
plan.md: What to do (phased implementation)
python scripts/create_task.py "implement-user-auth" --requirements FR-a1b2c,FR-d3e4f
Lifecycle: Not Started → Phase X In Progress → Blocked → Under Review → Completed
Random ID System
TDL uses 5-character Base36 random IDs instead of sequential numbers to prevent conflicts in parallel development.
Why Random IDs?
| Sequential IDs | Random IDs |
|---|---|
FR-001, FR-002 | FR-a3bf2, FR-b4cd8 |
| Conflicts when parallel work | No conflicts |
| Requires coordination | Independent generation |
| Central tracking file | Distributed traceability |
ID Format
- •Characters: 0-9 and a-z (Base36)
- •Length: 5 characters
- •Combinations: ~60 million
- •Collision probability: ~1% at 1,100 documents
Generate IDs
# Generate a raw ID python scripts/tdl_new_id.py # Generate with prefix python scripts/tdl_new_id.py --prefix FR # Output: FR-a3bf2
Directory Structure
docs/ ├── analysis/ # Problem exploration (AN-xxxxx) │ ├── archive/ # Completed analyses │ └── AN-a3bf2-topic.md ├── requirements/ # Formal requirements (FR/NFR-xxxxx) │ ├── FR-b4cd8-topic.md │ └── NFR-c5de9-topic.md ├── adr/ # Architecture decisions (ADR-xxxxx) │ ├── archive/ # Deprecated/superseded ADRs │ └── ADR-d6ef0-topic.md ├── tasks/ # Implementation tasks (T-xxxxx) │ └── T-e7fa1-topic/ │ ├── design.md │ └── plan.md └── templates/ # Document templates
Distributed Traceability
Every TDL document has a Links section that maintains relationships to other documents:
## Links - **Analysis**: [AN-a3bf2](../analysis/AN-a3bf2-topic.md) - **Requirements**: [FR-b4cd8](../requirements/FR-b4cd8-topic.md) - **Related ADRs**: N/A – First implementation - **Issue**: #123 - **PR**: N/A – Not yet submitted
Rules for Links
- •Always include all link categories - use
N/A – <reason>if not applicable - •Use relative paths for internal links
- •External references go in a separate section
- •Update links when relationships change
Available Scripts
Initialize TDL Structure
python scripts/init_tdl_docs.py [path]
Creates the complete directory structure and README files.
Generate Random ID
python scripts/tdl_new_id.py [--prefix PREFIX]
Generates a unique 5-character Base36 ID with optional prefix.
Create Documents
# Analysis python scripts/create_analysis.py "Topic Name" # Requirements python scripts/create_requirement.py "Title" --type FR|NFR [--category Category] # ADR python scripts/create_adr.py "Decision Title" [--lite] # Task (with design.md and plan.md) python scripts/create_task.py "task-name" [--requirements FR-xxxxx,NFR-xxxxx]
Analyze Traceability
# Show status summary python scripts/trace_status.py # Detailed report python scripts/trace_status.py --verbose # CI mode (exit 1 if gaps found) python scripts/trace_status.py --check # Markdown output python scripts/trace_status.py --format markdown
Document Templates
Common Structure
All documents follow this structure:
# Title ## Metadata - **ID**: [TYPE-xxxxx] - **Type**: [Document Type] - **Owner**: [Person or role] - **Reviewers**: [List] - **Status**: [Status] - **Date**: YYYY-MM-DD ## Links - **[Link Type]**: [ID or N/A – reason] ... ## [Content Sections] ... ## External References - [External links]
Template Rules
- •Language: All documents in English
- •Date format: YYYY-MM-DD
- •ID placement: In Metadata, not in title
- •Links section: Required in all documents
Code Integration
In Commits
git commit -m "feat(auth): Implement JWT authentication Implements FR-b4cd8 User Authentication Related ADR: ADR-d6ef0 Closes: #123"
In Code Comments
class AuthMiddleware:
"""JWT authentication middleware.
Implements: FR-b4cd8
Design: docs/tasks/T-e7fa1-implement-auth/design.md
"""
In Logs
logger.info(
"User authenticated",
extra={
"requirement": "FR-b4cd8",
"user_id": user_id,
"action": "auth.login.success"
}
)
Best Practices
Document Management
- •Create documents using scripts - ensures proper ID generation and structure
- •Update Links immediately - when relationships are established
- •Archive completed analyses - after requirements are formalized
- •Update status regularly - reflect current state
Parallel Development
- •Always use random IDs - never manually assign sequential numbers
- •Check traceability before merging -
python scripts/trace_status.py --check - •No central tracking file - rely on Links sections in documents
- •Resolve conflicts in content, not IDs - IDs should never conflict
Quality Assurance
- •Run traceability analysis - before releases and in CI
- •Fill all gaps - orphan requirements need tasks, orphan tasks need requirements
- •Review Links section - in code reviews
Quick Start
For New Projects
# 1. Initialize structure python scripts/init_tdl_docs.py # 2. Start with analysis python scripts/create_analysis.py "Initial Project Analysis" # 3. Create requirements from analysis python scripts/create_requirement.py "Core Feature" --type FR # 4. Document design decisions python scripts/create_adr.py "Technology Stack Selection" # 5. Create implementation task python scripts/create_task.py "implement-core-feature" --requirements FR-xxxxx
For Existing Projects
# 1. Initialize structure (won't overwrite existing) python scripts/init_tdl_docs.py # 2. Check current traceability python scripts/trace_status.py # 3. Document existing architecture python scripts/create_adr.py "Current Architecture Overview" # 4. Gradually add traceability to new work
Reference Materials
The references/ directory contains:
- •
adr-template.md- ADR writing guide with examples - •
commit-message-guide.md- Commit message standards - •
pr-template.md- Pull request templates - •
logging-patterns.md- Structured logging patterns - •
api_reference.md- Script API documentation
Troubleshooting
"ID collision detected"
The script automatically retries up to 10 times. If this persists:
- •Check if docs/ directory has an unusually large number of documents
- •Manually verify the generated ID doesn't exist
"Traceability gaps identified"
Run python scripts/trace_status.py --verbose to see:
- •Requirements without implementing tasks
- •Tasks without linked requirements
"Links section missing"
All documents must have a Links section. Use the creation scripts to ensure proper structure.
Summary
TDL provides a systematic approach to software development traceability:
| Component | Purpose |
|---|---|
| Random IDs | Prevent parallel development conflicts |
| 5 Phases | Structured workflow from analysis to execution |
| Links Section | Distributed traceability without central file |
| Scripts | Automate document creation and analysis |
| Templates | Ensure consistent documentation |
Start small, use the provided scripts, and gradually build a culture of traceability.