"docs/vscode:/vscode.git/clone" did not exist on "67c868e7b787c5ce4f7f9f118285ee38e92e2013"
Unverified Commit 46070b36 authored by Neelay Shah's avatar Neelay Shah Committed by GitHub
Browse files

feat: add templates and skills for issue-based DEPs (#7765)


Signed-off-by: default avatarDan Gil <dagil@nvidia.com>
Co-authored-by: default avatarClaude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: default avatarDan Gil <dagil@nvidia.com>
parent 6b8545fc
# Skill: Create a DEP as a GitHub Issue
## Purpose
Create a new Dynamo Enhancement Proposal (DEP) as a GitHub Issue on
`ai-dynamo/dynamo`. The issue number becomes the DEP number. Also
handles adding implementation plans and retroactive DEPs for existing
work.
## When to Use
When the user wants to propose a new feature, architecture change, or
process improvement via the issue-based DEP workflow. Also when adding
an implementation plan to an existing DEP, or filing a retroactive DEP
for work already merged.
## Workflow
### Create a New DEP
1. **Ask for source material**: Prompt the user for a Google Doc,
Confluence page, or other NVIDIA-internal document that contains
the background, customer context, or detailed requirements. Read
it using the appropriate tool (gdocs, Confluence MCP, WebFetch).
Include the link in the issue's References section — the document
is only accessible to NVIDIA employees and serves as the record
for customer-specific context that cannot appear in the public
issue prose.
2. **Gather required fields** from the user and source doc (prompt
if missing):
- **Summary**: One-paragraph description of the proposal
- **Motivation**: Why this change is needed
- **Proposal**: Detailed description of the proposed change
3. **Determine the area label** based on proposal content. Area labels
are bare names (e.g., `frontend`, `router`, `backend-vllm`) that
correspond to CODEOWNERS teams.
4. **Decide template**: full or lightweight.
Use lightweight if only Summary, Motivation, and Proposal are needed.
5. **Create the issue** (full DEP):
```bash
gh issue create \
--repo ai-dynamo/dynamo \
--title "DEP: <short descriptive title>" \
--label "dep:draft" \
--label "<area>" \
--body "$(cat <<'EOF'
## Summary
<summary>
## Motivation
<motivation>
## Proposal
<proposal>
## Alternate Solutions
<alternates>
## Requirements
<requirements>
## References
<references — include internal doc link here>
EOF
)"
```
**For lightweight DEP**, use:
```bash
gh issue create \
--repo ai-dynamo/dynamo \
--title "DEP (light): <short descriptive title>" \
--label "dep:draft" \
--label "dep:lightweight" \
--label "<area>" \
--body "$(cat <<'EOF'
## Summary
<summary>
## Motivation
<motivation>
## Proposal
<proposal>
EOF
)"
```
6. **Report** the created issue number and URL to the user.
### Add an Implementation Plan
1. **Read the DEP issue** and its discussion:
```bash
gh issue view <number> --repo ai-dynamo/dynamo
gh issue view <number> --repo ai-dynamo/dynamo --comments
```
2. **Draft the plan** with phases, tasks, effort estimates,
dependencies, risks, and testing strategy.
3. **Post as a comment**:
```bash
gh issue comment <number> --repo ai-dynamo/dynamo --body-file /tmp/plan.md
```
### Retroactive DEP
For work already merged without a DEP, file with `dep:implementing`
or `dep:done` and reference the existing PRs.
## Notes
- The issue body IS the spec — treat it as a living document.
- `dep:draft` is applied automatically. PIC changes to
`dep:under-review` when ready.
- For lightweight DEPs, use `dep:lightweight` label and omit optional
sections.
- For plan revisions, post a new comment with a changelog at the top.
Do not edit the original — preserve the timeline.
- **Customer name stripping**: Before creating or updating a DEP,
scan the summary, motivation, proposal, and all other fields for
specific customer names, company names, or partner names. Replace
them with generic references (e.g., "a customer", "a cloud
partner", "an enterprise user"). DEPs are public — no customer
names should appear in issue bodies, comments, or plans.
# Skill: Check DEP Status
## Purpose
List DEP issues with their current status, area, PIC, and approval
state. Find related DEPs for a given topic or component.
## When to Use
When the user wants to see the status of one or more DEPs, check what's
pending review, find DEPs related to a component, or get a triage
summary.
## Workflow
1. **List open DEP issues**:
```bash
gh issue list --repo ai-dynamo/dynamo \
--search 'label:"dep:draft","dep:under-review","dep:approved","dep:implementing"' \
--json number,title,labels,assignees,createdAt,updatedAt
```
2. **Filter by area** (if requested):
```bash
gh issue list --repo ai-dynamo/dynamo \
--label "<area>" \
--json number,title,labels,assignees
```
3. **Filter by status** (if requested):
```bash
gh issue list --repo ai-dynamo/dynamo \
--label "dep:<status>" \
--json number,title,labels,assignees
```
4. **Format as a summary table**:
```text
| # | Title | Status | Area | PIC | Updated |
|---|-------|--------|------|-----|---------|
| 42 | DEP: KV router scheduling | dep:under-review | router | @pic | 2026-03-28 |
```
5. **Find related DEPs** by searching issue titles and bodies:
```bash
gh issue list --repo ai-dynamo/dynamo \
--search 'DEP <keyword> label:"dep:draft","dep:under-review","dep:approved","dep:implementing","dep:done"' \
--json number,title,labels,state
```
6. **Include closed DEPs** if requested:
```bash
gh issue list --repo ai-dynamo/dynamo \
--state closed \
--search 'label:"dep:done","dep:deferred","dep:rejected","dep:replaced"' \
--json number,title,labels,assignees,closedAt
```
## Notes
- For a full triage view, include both open and recently closed DEPs.
- Cross-reference with `dep:lightweight` label to distinguish full vs.
lightweight DEPs.
- Area labels are bare names (e.g., `frontend`, `router`) — no prefix.
# Skill: Update DEP Lifecycle
## Purpose
Update DEP status through its lifecycle — triage, review, approve,
defer, or close. Covers the PIC workflow from initial assignment
through final approval.
## When to Use
When triaging DEP issues, reviewing a DEP as PIC or reviewer,
approving a DEP that is under review, or updating DEP status.
## Workflow
### Triage (assign PIC)
1. **List unassigned DEPs**:
```bash
gh issue list --repo ai-dynamo/dynamo \
--label "dep:draft" \
--json number,title,labels,assignees \
--jq '.[] | select(.assignees | length == 0)'
```
2. **Assign PIC** based on the area label:
```bash
gh issue edit <number> --repo ai-dynamo/dynamo \
--add-assignee "<github-username>"
```
3. **Move to review** when the spec is ready:
```bash
gh issue edit <number> --repo ai-dynamo/dynamo \
--remove-label "dep:draft" \
--add-label "dep:under-review"
```
### Review
1. **Read the DEP issue and discussion**:
```bash
gh issue view <number> --repo ai-dynamo/dynamo
gh issue view <number> --repo ai-dynamo/dynamo --comments
```
2. **Post review feedback** as comments on the issue.
3. **Request changes** or clarifications from the author.
### Approve
1. **Verify the issue is under review**:
```bash
gh issue view <number> --repo ai-dynamo/dynamo --json labels
```
2. **Post the approval comment**:
```bash
gh issue comment <number> --repo ai-dynamo/dynamo --body "/approve"
```
3. **If this is the PIC approving** (or all required reviewers have
approved), update the label:
```bash
gh issue edit <number> --repo ai-dynamo/dynamo \
--remove-label "dep:under-review" \
--add-label "dep:approved"
```
## Notes
- For straightforward DEPs, the PIC's `/approve` is sufficient.
- For multi-reviewer DEPs, the PIC maintains a pinned approval
checklist and updates the label only when all required approvals are
collected.
- `/approve` comments are searchable for audit:
`gh search issues --repo ai-dynamo/dynamo "/approve" in:comments`
- Area labels are bare names (e.g., `frontend`, `router`) — no prefix.
name: Lightweight DEP
description: Quick proposal for smaller changes
title: "DEP (light): "
labels: ["dep:draft", "dep:lightweight"]
body:
- type: dropdown
id: area
attributes:
label: Area
description: Primary area this DEP affects
options:
- external-api
- frontend
- router
- backend-vllm
- backend-trtllm
- backend-sglang
- kv-memory
- multimodal
- planner
- core-platform
- observability
- fault-tolerance
- gateway
- devops
- docs
- process
- k8s
- dgdr
- xpu
validations:
required: true
- type: textarea
id: summary
attributes:
label: Summary
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
validations:
required: true
name: Dynamo Enhancement Proposal (DEP)
description: Propose a new feature, architecture change, or process improvement
title: "DEP: "
labels: ["dep:draft"]
body:
- type: dropdown
id: area
attributes:
label: Area
description: Primary area this DEP affects (determines PIC assignment)
options:
- external-api
- frontend
- router
- backend-vllm
- backend-trtllm
- backend-sglang
- kv-memory
- multimodal
- planner
- core-platform
- observability
- fault-tolerance
- gateway
- devops
- docs
- process
- k8s
- dgdr
- xpu
validations:
required: true
- type: textarea
id: summary
attributes:
label: Summary
description: One-paragraph summary of the proposal
validations:
required: true
- type: textarea
id: motivation
attributes:
label: Motivation
description: Why is this change needed? What problem does it solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposal
description: Detailed description of the proposed change
validations:
required: true
- type: textarea
id: alternates
attributes:
label: Alternate Solutions
description: What other approaches were considered and why were they not chosen?
validations:
required: false
- type: textarea
id: requirements
attributes:
label: Requirements
description: Specific requirements (use MUST/SHOULD per RFC-2119)
validations:
required: false
- type: textarea
id: references
attributes:
label: References
description: Links to related documents, prior art, external resources
validations:
required: false
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment