feat(projman): add RFC system for feature tracking
Implement wiki-based Request for Comments system for capturing, reviewing, and tracking feature ideas through their lifecycle. New commands: - /rfc-create: Create RFC from conversation or clarified spec - /rfc-list: List RFCs grouped by status - /rfc-review: Submit Draft RFC for review - /rfc-approve: Approve RFC for sprint planning - /rfc-reject: Reject RFC with documented reason RFC lifecycle: Draft → Review → Approved → Implementing → Implemented Integration: - /sprint-plan detects approved RFCs and offers selection - /sprint-close updates RFC status on completion - clarity-assist suggests /rfc-create for feature ideas New MCP tool: allocate_rfc_number Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: input-detection
|
||||
description: Detect planning input source (file, wiki, or conversation)
|
||||
description: Detect planning input source (RFC, file, wiki, or conversation)
|
||||
---
|
||||
|
||||
# Input Source Detection
|
||||
@@ -20,12 +20,56 @@ Defines how to detect where planning input is coming from and how to handle each
|
||||
|
||||
| Priority | Source | Detection | Action |
|
||||
|----------|--------|-----------|--------|
|
||||
| 0 | Approved RFC | RFC-Index has entries in "Approved" section | Offer RFC selection or new work |
|
||||
| 1 | Local file | `docs/changes/*.md` exists | Parse frontmatter, migrate to wiki, delete local |
|
||||
| 2 | Existing wiki | `Change VXX.X.X: Proposal` exists | Use as-is, create implementation page |
|
||||
| 3 | Conversation | Neither exists | Create wiki from discussion context |
|
||||
|
||||
---
|
||||
|
||||
## RFC Detection (Priority 0)
|
||||
|
||||
Before checking for local files or wiki proposals, check for approved RFCs.
|
||||
|
||||
### Detection Steps
|
||||
|
||||
1. **Fetch RFC-Index:**
|
||||
```python
|
||||
get_wiki_page(page_name="RFC-Index", repo="org/repo")
|
||||
```
|
||||
|
||||
2. **Parse Approved Section:**
|
||||
- Find "## Approved" section
|
||||
- Extract RFC entries from table
|
||||
|
||||
3. **If Approved RFCs Exist:**
|
||||
```
|
||||
Approved RFCs available for implementation:
|
||||
|
||||
| RFC | Title | Champion |
|
||||
|-----|-------|----------|
|
||||
| RFC-0003 | Feature X | @user |
|
||||
| RFC-0007 | Enhancement Y | @user |
|
||||
|
||||
Options:
|
||||
[1] Implement RFC-0003: Feature X
|
||||
[2] Implement RFC-0007: Enhancement Y
|
||||
[3] Describe new work (skip RFCs)
|
||||
|
||||
Select an option:
|
||||
```
|
||||
|
||||
4. **If RFC Selected:**
|
||||
- Use RFC content as planning input
|
||||
- Status will transition to Implementing after planning approval
|
||||
- Skip local file and wiki proposal detection
|
||||
|
||||
5. **If "New Work" Selected:**
|
||||
- Continue with normal Priority 1-3 detection
|
||||
- Optionally offer: "Would you like to create an RFC first? (y/n)"
|
||||
|
||||
---
|
||||
|
||||
## Local File Format
|
||||
|
||||
```yaml
|
||||
|
||||
@@ -40,10 +40,18 @@ Execute in order:
|
||||
### 3. Detect Input Source
|
||||
|
||||
Follow `skills/input-detection.md`:
|
||||
1. Check for `docs/changes/*.md` files
|
||||
2. Check for existing wiki proposal
|
||||
3. If neither: use conversation context
|
||||
4. If ambiguous: ask user
|
||||
1. **Check for approved RFCs** (Priority 0)
|
||||
2. Check for `docs/changes/*.md` files
|
||||
3. Check for existing wiki proposal
|
||||
4. If neither: use conversation context
|
||||
5. If ambiguous: ask user
|
||||
|
||||
### 3a. RFC Status Update (if RFC selected)
|
||||
|
||||
If input source is an RFC:
|
||||
1. **Note the RFC number** for later status update
|
||||
2. RFC status update happens AFTER sprint approval (Step 11)
|
||||
3. The RFC provides the planning context - use its Summary, Motivation, and Design sections
|
||||
|
||||
### 4. Search Relevant Lessons Learned
|
||||
|
||||
@@ -110,6 +118,31 @@ Follow `skills/sprint-approval.md`:
|
||||
- Wait for explicit user approval
|
||||
- Record approval in milestone description
|
||||
|
||||
### 12. Update RFC Status (if applicable)
|
||||
|
||||
If planning input was an RFC:
|
||||
|
||||
1. **Fetch RFC page:**
|
||||
```python
|
||||
get_wiki_page(page_name="RFC-NNNN:-Title", repo="org/repo")
|
||||
```
|
||||
|
||||
2. **Update RFC page:**
|
||||
- Change status: Approved → Implementing
|
||||
- Add Sprint reference to frontmatter
|
||||
- Add Implementation section with sprint details and issue links
|
||||
```python
|
||||
update_wiki_page(
|
||||
page_name="RFC-NNNN:-Title",
|
||||
content="[updated content with Implementing status]",
|
||||
repo="org/repo"
|
||||
)
|
||||
```
|
||||
|
||||
3. **Update RFC-Index:**
|
||||
- Remove from "## Approved" section
|
||||
- Add to "## Implementing" section with sprint reference
|
||||
|
||||
---
|
||||
|
||||
## Cleanup After Planning
|
||||
|
||||
380
plugins/projman/skills/rfc-templates.md
Normal file
380
plugins/projman/skills/rfc-templates.md
Normal file
@@ -0,0 +1,380 @@
|
||||
---
|
||||
name: rfc-templates
|
||||
description: RFC page templates and frontmatter format specifications
|
||||
---
|
||||
|
||||
# RFC Templates
|
||||
|
||||
## Purpose
|
||||
|
||||
Provides templates for RFC wiki pages and defines the required/optional sections for complete RFC documentation.
|
||||
|
||||
## When to Use
|
||||
|
||||
- **Commands**: `/rfc-create` when generating new RFC pages
|
||||
- **Integration**: Referenced by `rfc-workflow.md` for page structure
|
||||
|
||||
---
|
||||
|
||||
## RFC Page Frontmatter
|
||||
|
||||
Every RFC page starts with a metadata block using blockquote format:
|
||||
|
||||
```markdown
|
||||
> **RFC:** 0001
|
||||
> **Title:** Short Descriptive Title
|
||||
> **Status:** Draft
|
||||
> **Author:** @username
|
||||
> **Created:** 2026-01-25
|
||||
> **Updated:** 2026-01-25
|
||||
> **Champion:** (unassigned)
|
||||
> **Sprint:** (none)
|
||||
> **Superseded-By:** (none)
|
||||
```
|
||||
|
||||
### Frontmatter Fields
|
||||
|
||||
| Field | Required | Description |
|
||||
|-------|----------|-------------|
|
||||
| `RFC` | Yes | 4-digit RFC number (e.g., 0001) |
|
||||
| `Title` | Yes | Short descriptive title |
|
||||
| `Status` | Yes | Current lifecycle status |
|
||||
| `Author` | Yes | Original RFC author |
|
||||
| `Created` | Yes | Creation date (YYYY-MM-DD) |
|
||||
| `Updated` | Yes | Last update date (YYYY-MM-DD) |
|
||||
| `Champion` | No | Assigned reviewer/sponsor |
|
||||
| `Sprint` | No | Sprint reference when implementing |
|
||||
| `Superseded-By` | No | RFC number if superseded |
|
||||
|
||||
---
|
||||
|
||||
## Full RFC Page Template
|
||||
|
||||
```markdown
|
||||
> **RFC:** NNNN
|
||||
> **Title:** [Short Title]
|
||||
> **Status:** Draft
|
||||
> **Author:** @[username]
|
||||
> **Created:** YYYY-MM-DD
|
||||
> **Updated:** YYYY-MM-DD
|
||||
> **Champion:** (unassigned)
|
||||
> **Sprint:** (none)
|
||||
> **Superseded-By:** (none)
|
||||
|
||||
# RFC-NNNN: [Full Title]
|
||||
|
||||
## Summary
|
||||
|
||||
A brief (2-3 paragraph) explanation of the proposed change. This should be understandable by someone unfamiliar with the codebase.
|
||||
|
||||
**What:** What is being proposed?
|
||||
**Why:** Why is this change needed?
|
||||
**Impact:** What will be different after this is implemented?
|
||||
|
||||
## Motivation
|
||||
|
||||
### Problem Statement
|
||||
|
||||
Describe the problem this RFC addresses. Include:
|
||||
- Current pain points or limitations
|
||||
- User stories or use cases
|
||||
- Why existing solutions are insufficient
|
||||
|
||||
### Goals
|
||||
|
||||
- [ ] Goal 1: Specific, measurable outcome
|
||||
- [ ] Goal 2: Another specific outcome
|
||||
- [ ] Goal 3: Third outcome
|
||||
|
||||
### Non-Goals
|
||||
|
||||
What is explicitly out of scope for this RFC:
|
||||
- Non-goal 1
|
||||
- Non-goal 2
|
||||
|
||||
## Detailed Design
|
||||
|
||||
### Overview
|
||||
|
||||
High-level description of the solution approach.
|
||||
|
||||
### Architecture
|
||||
|
||||
Describe the technical architecture:
|
||||
- Components involved
|
||||
- Data flow
|
||||
- Integration points
|
||||
|
||||
### Implementation Details
|
||||
|
||||
#### Component 1
|
||||
|
||||
Detailed implementation for component 1.
|
||||
|
||||
#### Component 2
|
||||
|
||||
Detailed implementation for component 2.
|
||||
|
||||
### API/Interface Changes
|
||||
|
||||
If applicable, describe any API or interface changes:
|
||||
|
||||
```python
|
||||
# Example new API
|
||||
def new_function(param1: str, param2: int) -> dict:
|
||||
"""Description of new function."""
|
||||
pass
|
||||
```
|
||||
|
||||
### Database/Storage Changes
|
||||
|
||||
If applicable, describe any data model changes.
|
||||
|
||||
### Configuration Changes
|
||||
|
||||
If applicable, describe any new configuration options.
|
||||
|
||||
## Alternatives Considered
|
||||
|
||||
### Alternative 1: [Name]
|
||||
|
||||
**Description:** Brief description of this alternative.
|
||||
|
||||
**Pros:**
|
||||
- Pro 1
|
||||
- Pro 2
|
||||
|
||||
**Cons:**
|
||||
- Con 1
|
||||
- Con 2
|
||||
|
||||
**Why not chosen:** Explanation.
|
||||
|
||||
### Alternative 2: [Name]
|
||||
|
||||
**Description:** Brief description of this alternative.
|
||||
|
||||
**Pros:**
|
||||
- Pro 1
|
||||
|
||||
**Cons:**
|
||||
- Con 1
|
||||
|
||||
**Why not chosen:** Explanation.
|
||||
|
||||
## Unresolved Questions
|
||||
|
||||
Questions that need to be answered before or during implementation:
|
||||
|
||||
1. **Question 1:** Description of open question
|
||||
- Possible answer A
|
||||
- Possible answer B
|
||||
|
||||
2. **Question 2:** Description of another open question
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Dependency 1: Description and status
|
||||
- Dependency 2: Description and status
|
||||
|
||||
## Security Considerations
|
||||
|
||||
Describe any security implications:
|
||||
- Authentication/authorization impacts
|
||||
- Data privacy considerations
|
||||
- Potential attack vectors and mitigations
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
How will this be tested:
|
||||
- Unit tests
|
||||
- Integration tests
|
||||
- Manual testing checklist
|
||||
|
||||
## Rollout Plan
|
||||
|
||||
How will this be deployed:
|
||||
- Feature flags
|
||||
- Phased rollout
|
||||
- Rollback strategy
|
||||
|
||||
---
|
||||
|
||||
## Review Notes
|
||||
|
||||
*(Added during Review phase)*
|
||||
|
||||
### Review Discussion
|
||||
|
||||
Summary of review feedback and discussions.
|
||||
|
||||
### Changes Made
|
||||
|
||||
List of changes made in response to review feedback.
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
*(Added when Approved or Rejected)*
|
||||
|
||||
**Decision:** [Approved/Rejected]
|
||||
**Date:** YYYY-MM-DD
|
||||
**Decided By:** @[username]
|
||||
|
||||
**Rationale:**
|
||||
|
||||
Explanation of the decision.
|
||||
|
||||
---
|
||||
|
||||
## Implementation
|
||||
|
||||
*(Added during Implementing phase)*
|
||||
|
||||
**Sprint:** [Sprint reference]
|
||||
**Started:** YYYY-MM-DD
|
||||
**Issues:**
|
||||
- #123: Issue title
|
||||
- #124: Another issue
|
||||
|
||||
### Progress Notes
|
||||
|
||||
Updates during implementation.
|
||||
|
||||
---
|
||||
|
||||
## Completion
|
||||
|
||||
*(Added when Implemented)*
|
||||
|
||||
**Completed:** YYYY-MM-DD
|
||||
**Release:** vX.Y.Z
|
||||
**Lessons Learned:** [Link to lessons wiki page]
|
||||
|
||||
### Final Notes
|
||||
|
||||
Summary of what was implemented and any deviations from the original design.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Section Requirements by Status
|
||||
|
||||
### Draft (Minimum)
|
||||
- Summary (complete)
|
||||
- Motivation (at least Problem Statement)
|
||||
- Detailed Design (at least Overview)
|
||||
|
||||
### Review (Required)
|
||||
All Draft sections plus:
|
||||
- Alternatives Considered (at least 1)
|
||||
- Unresolved Questions (can be empty if none)
|
||||
|
||||
### Approved (Required)
|
||||
All Review sections plus:
|
||||
- Decision section with approval
|
||||
|
||||
### Implementing (Required)
|
||||
All Approved sections plus:
|
||||
- Implementation section with Sprint and Issues
|
||||
|
||||
### Implemented (Required)
|
||||
All Implementing sections plus:
|
||||
- Completion section
|
||||
|
||||
---
|
||||
|
||||
## RFC-Index Entry Format
|
||||
|
||||
### Draft Section Entry
|
||||
```markdown
|
||||
| [RFC-0005](RFC-0005:-Idea-Z) | Idea Z | @user | 2026-01-25 |
|
||||
```
|
||||
|
||||
### Review Section Entry
|
||||
```markdown
|
||||
| [RFC-0004](RFC-0004:-Feature-Y) | Feature Y | @user | 2026-01-20 |
|
||||
```
|
||||
|
||||
### Approved Section Entry
|
||||
```markdown
|
||||
| [RFC-0003](RFC-0003:-Feature-X) | Feature X | @champion | 2026-01-15 |
|
||||
```
|
||||
|
||||
### Implementing Section Entry
|
||||
```markdown
|
||||
| [RFC-0002](RFC-0002:-Feature-W) | Feature W | Sprint 18 | 2026-01-22 |
|
||||
```
|
||||
|
||||
### Implemented Section Entry
|
||||
```markdown
|
||||
| [RFC-0001](RFC-0001:-Initial-Feature) | Initial Feature | 2026-01-10 | v5.0.0 |
|
||||
```
|
||||
|
||||
### Rejected Section Entry
|
||||
```markdown
|
||||
| [RFC-0006](RFC-0006:-Rejected-Idea) | Rejected Idea | Out of scope | 2026-01-18 |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Minimal RFC Template (Quick Start)
|
||||
|
||||
For rapid RFC creation from conversation:
|
||||
|
||||
```markdown
|
||||
> **RFC:** NNNN
|
||||
> **Title:** [Title]
|
||||
> **Status:** Draft
|
||||
> **Author:** @[username]
|
||||
> **Created:** YYYY-MM-DD
|
||||
> **Updated:** YYYY-MM-DD
|
||||
> **Champion:** (unassigned)
|
||||
> **Sprint:** (none)
|
||||
> **Superseded-By:** (none)
|
||||
|
||||
# RFC-NNNN: [Title]
|
||||
|
||||
## Summary
|
||||
|
||||
[Brief description of the proposal]
|
||||
|
||||
## Motivation
|
||||
|
||||
### Problem Statement
|
||||
|
||||
[What problem does this solve?]
|
||||
|
||||
### Goals
|
||||
|
||||
- [ ] [Primary goal]
|
||||
|
||||
## Detailed Design
|
||||
|
||||
### Overview
|
||||
|
||||
[High-level approach]
|
||||
|
||||
## Alternatives Considered
|
||||
|
||||
*(To be added during review)*
|
||||
|
||||
## Unresolved Questions
|
||||
|
||||
- [Any open questions?]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Creating RFC from Clarified Spec
|
||||
|
||||
When `/clarify` provides a clarified specification, map sections:
|
||||
|
||||
| Clarify Output | RFC Section |
|
||||
|----------------|-------------|
|
||||
| Problem/Context | Motivation > Problem Statement |
|
||||
| Goals/Outcomes | Motivation > Goals |
|
||||
| Scope/Requirements | Detailed Design > Overview |
|
||||
| Constraints | Detailed Design or Non-Goals |
|
||||
| Success Criteria | Testing Strategy |
|
||||
308
plugins/projman/skills/rfc-workflow.md
Normal file
308
plugins/projman/skills/rfc-workflow.md
Normal file
@@ -0,0 +1,308 @@
|
||||
---
|
||||
name: rfc-workflow
|
||||
description: RFC lifecycle management, state transitions, and wiki page conventions
|
||||
---
|
||||
|
||||
# RFC Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Defines the Request for Comments (RFC) system for capturing, reviewing, and tracking feature ideas through their lifecycle from initial proposal to implementation.
|
||||
|
||||
## When to Use
|
||||
|
||||
- **Planner agent**: When detecting approved RFCs for sprint planning
|
||||
- **Commands**: `/rfc-create`, `/rfc-list`, `/rfc-review`, `/rfc-approve`, `/rfc-reject`
|
||||
- **Integration**: With `/sprint-plan` to select approved RFCs for implementation
|
||||
|
||||
---
|
||||
|
||||
## RFC Lifecycle States
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ │
|
||||
▼ │
|
||||
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │
|
||||
│ Draft │───▶│ Review │───▶│ Approved │───▶│ Implementing │────┤
|
||||
└─────────┘ └─────────┘ └──────────┘ └──────────────┘ │
|
||||
│ │ │ │
|
||||
│ │ ▼ │
|
||||
│ │ ┌─────────────┐ │
|
||||
│ │ │ Implemented │ │
|
||||
│ │ └─────────────┘ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────────┐ ┌────────────┐ │
|
||||
│ │ Rejected │ │ Superseded │ │
|
||||
│ └──────────┘ └────────────┘ │
|
||||
│ │
|
||||
▼ │
|
||||
┌─────────┐ │
|
||||
│ Stale │────────────────────────────────────────────────────────┘
|
||||
└─────────┘ (revived → Draft)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## State Definitions
|
||||
|
||||
| Status | Meaning | Valid Transitions |
|
||||
|--------|---------|-------------------|
|
||||
| `Draft` | Idea captured, needs refinement | → Review, → Stale |
|
||||
| `Review` | Being evaluated by maintainers | → Approved, → Rejected, → Draft |
|
||||
| `Approved` | Ready for sprint planning | → Implementing |
|
||||
| `Rejected` | Declined with documented reason | (terminal) |
|
||||
| `Implementing` | Active sprint work in progress | → Implemented, → Draft (if blocked) |
|
||||
| `Implemented` | Completed, links to release | → Superseded |
|
||||
| `Stale` | Draft with no activity >90 days | → Draft (if revived) |
|
||||
| `Superseded` | Replaced by newer RFC | (terminal) |
|
||||
|
||||
---
|
||||
|
||||
## State Transition Rules
|
||||
|
||||
### Draft → Review
|
||||
- **Who can transition**: RFC author or any maintainer
|
||||
- **Requirements**: RFC has complete Summary, Motivation, and Detailed Design sections
|
||||
- **Action**: Update status, optionally assign champion
|
||||
|
||||
### Review → Approved
|
||||
- **Who can transition**: Maintainer or designated reviewer
|
||||
- **Requirements**: Review discussion complete, no blocking concerns
|
||||
- **Action**: Update status, add Decision section with approval reason
|
||||
|
||||
### Review → Rejected
|
||||
- **Who can transition**: Maintainer or designated reviewer
|
||||
- **Requirements**: Reason must be documented
|
||||
- **Action**: Update status, add Decision section with rejection reason
|
||||
|
||||
### Approved → Implementing
|
||||
- **Who can transition**: Planner agent via `/sprint-plan`
|
||||
- **Requirements**: RFC selected for sprint
|
||||
- **Action**: Update status, add Sprint reference, update RFC-Index
|
||||
|
||||
### Implementing → Implemented
|
||||
- **Who can transition**: Orchestrator agent via `/sprint-close`
|
||||
- **Requirements**: Sprint completed successfully
|
||||
- **Action**: Update status, add completion date, link to lessons learned
|
||||
|
||||
### Implementing → Draft
|
||||
- **Who can transition**: Any maintainer
|
||||
- **Requirements**: Implementation blocked, needs rework
|
||||
- **Action**: Update status, add Implementation Notes explaining why
|
||||
|
||||
### Draft → Stale
|
||||
- **Automatic**: No activity for 90 days
|
||||
- **Action**: Update status in RFC-Index
|
||||
|
||||
### Stale → Draft
|
||||
- **Who can transition**: Anyone
|
||||
- **Requirements**: Renewed interest, updated content
|
||||
- **Action**: Update status, add Revival Notes
|
||||
|
||||
### Implemented → Superseded
|
||||
- **Who can transition**: Any maintainer
|
||||
- **Requirements**: New RFC replaces functionality
|
||||
- **Action**: Update status, add Superseded-By reference
|
||||
|
||||
---
|
||||
|
||||
## Wiki Page Naming
|
||||
|
||||
| Page Type | Naming Convention | Example |
|
||||
|-----------|-------------------|---------|
|
||||
| RFC Page | `RFC-NNNN: Short Title` | `RFC-0001: RFC System Implementation` |
|
||||
| Index Page | `RFC-Index` | `RFC-Index` |
|
||||
|
||||
**Number Format:**
|
||||
- 4-digit zero-padded (0001, 0002, 0003, ...)
|
||||
- Sequential, never reused
|
||||
- Allocated via `allocate_rfc_number` MCP tool
|
||||
|
||||
---
|
||||
|
||||
## Number Allocation Logic
|
||||
|
||||
```python
|
||||
# Pseudocode for allocate_rfc_number
|
||||
async def allocate_rfc_number(repo):
|
||||
pages = await list_wiki_pages(repo)
|
||||
rfc_pages = [p for p in pages if p['title'].startswith('RFC-')]
|
||||
|
||||
if not rfc_pages:
|
||||
return {'next_number': 1, 'formatted': 'RFC-0001'}
|
||||
|
||||
numbers = []
|
||||
for page in rfc_pages:
|
||||
# Extract number from "RFC-NNNN: Title"
|
||||
match = re.match(r'RFC-(\d{4})', page['title'])
|
||||
if match:
|
||||
numbers.append(int(match.group(1)))
|
||||
|
||||
next_num = max(numbers) + 1 if numbers else 1
|
||||
return {
|
||||
'next_number': next_num,
|
||||
'formatted': f'RFC-{next_num:04d}'
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## RFC-Index Page Format
|
||||
|
||||
The RFC-Index page organizes RFCs by status:
|
||||
|
||||
```markdown
|
||||
# RFC Index
|
||||
|
||||
## Approved
|
||||
|
||||
RFCs ready for implementation in upcoming sprints.
|
||||
|
||||
| RFC | Title | Champion | Created |
|
||||
|-----|-------|----------|---------|
|
||||
| [RFC-0003](RFC-0003:-Feature-X) | Feature X | @user | 2026-01-15 |
|
||||
|
||||
## In Review
|
||||
|
||||
RFCs currently being evaluated.
|
||||
|
||||
| RFC | Title | Author | Created |
|
||||
|-----|-------|--------|---------|
|
||||
| [RFC-0004](RFC-0004:-Feature-Y) | Feature Y | @user | 2026-01-20 |
|
||||
|
||||
## Draft
|
||||
|
||||
RFCs in early development.
|
||||
|
||||
| RFC | Title | Author | Created |
|
||||
|-----|-------|--------|---------|
|
||||
| [RFC-0005](RFC-0005:-Idea-Z) | Idea Z | @user | 2026-01-25 |
|
||||
|
||||
## Implementing
|
||||
|
||||
RFCs currently being implemented.
|
||||
|
||||
| RFC | Title | Sprint | Started |
|
||||
|-----|-------|--------|---------|
|
||||
| [RFC-0002](RFC-0002:-Feature-W) | Feature W | Sprint 18 | 2026-01-22 |
|
||||
|
||||
## Implemented
|
||||
|
||||
Completed RFCs.
|
||||
|
||||
| RFC | Title | Completed | Release |
|
||||
|-----|-------|-----------|---------|
|
||||
| [RFC-0001](RFC-0001:-Initial-Feature) | Initial Feature | 2026-01-10 | v5.0.0 |
|
||||
|
||||
## Rejected
|
||||
|
||||
RFCs that were declined.
|
||||
|
||||
| RFC | Title | Reason | Date |
|
||||
|-----|-------|--------|------|
|
||||
| [RFC-0006](RFC-0006:-Rejected-Idea) | Rejected Idea | Out of scope | 2026-01-18 |
|
||||
|
||||
## Stale
|
||||
|
||||
Inactive RFCs (no updates >90 days).
|
||||
|
||||
| RFC | Title | Last Updated |
|
||||
|-----|-------|--------------|
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Creating RFC-Index
|
||||
|
||||
If RFC-Index doesn't exist when creating first RFC:
|
||||
|
||||
```python
|
||||
create_wiki_page(
|
||||
repo="org/repo",
|
||||
title="RFC-Index",
|
||||
content="""# RFC Index
|
||||
|
||||
## Approved
|
||||
|
||||
RFCs ready for implementation in upcoming sprints.
|
||||
|
||||
| RFC | Title | Champion | Created |
|
||||
|-----|-------|----------|---------|
|
||||
|
||||
## In Review
|
||||
|
||||
RFCs currently being evaluated.
|
||||
|
||||
| RFC | Title | Author | Created |
|
||||
|-----|-------|--------|---------|
|
||||
|
||||
## Draft
|
||||
|
||||
RFCs in early development.
|
||||
|
||||
| RFC | Title | Author | Created |
|
||||
|-----|-------|--------|---------|
|
||||
|
||||
## Implementing
|
||||
|
||||
RFCs currently being implemented.
|
||||
|
||||
| RFC | Title | Sprint | Started |
|
||||
|-----|-------|--------|---------|
|
||||
|
||||
## Implemented
|
||||
|
||||
Completed RFCs.
|
||||
|
||||
| RFC | Title | Completed | Release |
|
||||
|-----|-------|-----------|---------|
|
||||
|
||||
## Rejected
|
||||
|
||||
RFCs that were declined.
|
||||
|
||||
| RFC | Title | Reason | Date |
|
||||
|-----|-------|--------|------|
|
||||
|
||||
## Stale
|
||||
|
||||
Inactive RFCs (no updates >90 days).
|
||||
|
||||
| RFC | Title | Last Updated |
|
||||
|-----|-------|--------------|
|
||||
"""
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Updating RFC-Index
|
||||
|
||||
When RFC status changes:
|
||||
|
||||
1. Fetch current RFC-Index content
|
||||
2. Parse sections by status header
|
||||
3. Remove RFC entry from old section (if present)
|
||||
4. Add RFC entry to new section
|
||||
5. Update wiki page
|
||||
|
||||
**Example status change (Draft → Review):**
|
||||
1. Remove from "## Draft" section
|
||||
2. Add to "## In Review" section
|
||||
|
||||
---
|
||||
|
||||
## Integration Points
|
||||
|
||||
| Component | How It Uses RFC System |
|
||||
|-----------|------------------------|
|
||||
| `/rfc-create` | Creates RFC page + updates RFC-Index |
|
||||
| `/rfc-list` | Reads and displays RFC-Index |
|
||||
| `/rfc-review` | Transitions Draft → Review |
|
||||
| `/rfc-approve` | Transitions Review → Approved |
|
||||
| `/rfc-reject` | Transitions Review/Draft → Rejected |
|
||||
| `/sprint-plan` | Detects Approved RFCs, transitions to Implementing |
|
||||
| `/sprint-close` | Transitions Implementing → Implemented |
|
||||
| `clarity-assist` | Suggests `/rfc-create` for feature ideas |
|
||||
Reference in New Issue
Block a user