Feature Promotion Lifecycle
Canonical variable model and command sequence for promoting potential feature/bug entries and initializing active feature delivery.
When to Use This Skill
Use this skill when:
- A large-scope change requires feature/bug promotion workflow.
- A short-path workflow still requires promotion/folder initialization before delegated implementation.
- An orchestrator must create potential docs, promote to issue, branch, and active feature folder.
- Downstream research/spec agents depend on deterministic paths and identifiers.
Extension-First Execution Rule
When the agent has access to the VS Code extension tool surface (in particular vscode/runCommand plus extension access), execute the lifecycle through the contributed extension commands first.
Canonical extension command invocations:
- feature potential entry:
drm-copilot.newPotentialEntry with ["-ShortName", "${short-name}"]
- bug potential entry:
drm-copilot.newPotentialBugEntry with ["--short-name", "${short-name}"]
- potential-to-issue promotion:
drm-copilot.potentialToIssue with ["--potential-path", "${relativeFile}", "--promotion-type", "${promotion-type}", "--work-mode", "${work-mode}"]
- active feature folder creation:
drm-copilot.newActiveFeatureFolder with ["--feature-name", "${long-name}", "--type", "${promotion-type}", "--issue-number", "${issue-num}", "--work-mode", "${work-mode}"]
Fallback rule:
- Use the direct script/CLI commands below only when the agent host cannot invoke VS Code extension commands directly.
- When falling back, preserve the same variable model, flags, and work-mode semantics.
Canonical Variables
${promotion-type}: feature or bug
${short-name}: lowercase slug, hyphen-separated
${relativeFile}: workspace-relative path to created potential entry markdown
${long-name}: ${relativeFile} filename without .md
${issue-num}: promoted GitHub issue number
${feature-folder}: active feature folder path
${plan-path}: single canonical plan file path reused across planning and preflight revisions
${work-mode}: minor-audit, full-feature, or full-bug (legacy full is accepted only as an alias for full-feature)
${short-path-flag}: --work-mode minor-audit (mandatory for short-path promotion/folder creation)
Canonical Fallback Command Sequence
- Create potential entry by type:
- feature:
VS Code command: drm-copilot: New Potential Entry(command ID:drm-copilot.newPotentialEntry) -ShortName ${short-name}
- bug:
VS Code command: drm-copilot: New Potential Bug Entry(command ID:drm-copilot.newPotentialBugEntry) --short-name ${short-name}
- Promote potential doc:
VS Code command: drm-copilot: Potential To Issue(command ID:drm-copilot.potentialToIssue) --potential-path ${relativeFile} --promotion-type ${promotion-type} --work-mode ${work-mode}
- Create branch:
${promotion-type}/${short-name}-${issue-num}
- Create active feature folder:
VS Code command: drm-copilot: New Active Feature Folder(command ID:drm-copilot.newActiveFeatureFolder) --feature-name ${long-name} --type ${promotion-type} --issue-number ${issue-num} --work-mode ${work-mode}
Canonical Fallback Short-Path Sequence (Minor Audit Mode)
When orchestrator routing selects short path, promotion/folder initialization still occurs and MUST use minor-audit mode.
- Promote potential doc with short-path flag:
VS Code command: drm-copilot: Potential To Issue(command ID:drm-copilot.potentialToIssue) --potential-path ${relativeFile} --promotion-type ${promotion-type} --work-mode minor-audit
- Create branch:
${promotion-type}/${short-name}-${issue-num}
- Create active feature folder with short-path flag:
VS Code command: drm-copilot: New Active Feature Folder(command ID:drm-copilot.newActiveFeatureFolder) --feature-name ${long-name} --type ${promotion-type} --issue-number ${issue-num} --work-mode minor-audit
3a) Verify minor-audit folder integrity before proceeding:
${feature-folder}/issue.md exists and contains - Work Mode: minor-audit
${feature-folder}/issue.md contains an explicit ## Acceptance Criteria section
${feature-folder}/spec.md does not exist
${feature-folder}/user-story.md does not exist
- if any check fails, stop and remediate before planning
- Delegate minimal-audit plan creation to
atomic_planner with directive:
DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED
4a) Resolve and persist ${plan-path} before delegation:
- reuse the earliest existing
plan*.md in ${feature-folder} when present
- otherwise create exactly one canonical plan file path and reuse it for all revisions
- Require preflight validation via
atomic_executor until:
Execute plan Phase 0 only via executor and checkpoint evidence.
Branch:
- manual bootstrap: save state and stop ONLY when the initial user request explicitly opted into manual orchestration from the beginning,
- non-bootstrap: continue with constrained small-path development.
Automation rule:
- do not introduce manual bootstrap, human-operator validation, or any other manual handoff later in orchestration unless that initial explicit opt-in exists
- if automation cannot proceed, record blocked automated state instead of asking for manual intervention
- Validate delivery via executor against
issue.md, then run reduced audit/remediation loop until ready-to-merge.
Required Outputs for Downstream Handoffs
Before delegating research/spec/planning, provide:
${feature-folder}/issue.md
${feature-folder}/spec.md (or expected target path)
${feature-folder}/user-story.md (or explicit NONE)
- latest research artifact path(s)
- constraints/APIs/invariants to preserve
Mode-aware expectations:
- For
minor-audit, the explicit ## Acceptance Criteria section in issue.md is the primary acceptance-criteria source and spec.md/user-story.md may be intentionally absent by design.
- For
minor-audit, do not infer acceptance criteria from other issue.md sections such as verification notes, next steps, or severity checklists.
- For
minor-audit, spec.md/user-story.md must be treated as integrity failures when they appear unexpectedly in the active folder.
- For
full-feature, spec.md and user-story.md are expected alongside issue.md.
- For
full-bug, spec.md is expected alongside issue.md; user-story.md should be absent unless the requirements explicitly justify it.
Selected-mode persistence requirements:
- Producer outputs MUST persist exactly one marker in
issue.md metadata above the first ## heading:
- Work Mode: minor-audit
- Work Mode: full-feature
- Work Mode: full-bug
- Persisted marker MUST represent selected mode after eligibility checks, not requested mode.
- If a legacy requested
full path is accepted, tooling MUST normalize it to full-feature before persistence.
- If a requested
minor-audit path is rejected by eligibility checks, tooling MUST fail closed to full-feature, emit fallback reason, and persist - Work Mode: full-feature.
1---2name: feature-promotion-lifecycle-33description: Deterministic promotion workflow from potential feature/bug entry to issue, branch, active feature folder, and downstream spec/research handoffs. Prefer VS Code extension command execution when extension tools are available; use underlying scripts only as fallback.4---56# Feature Promotion Lifecycle78Canonical variable model and command sequence for promoting potential feature/bug entries and initializing active feature delivery.910## When to Use This Skill1112Use this skill when:13- A large-scope change requires feature/bug promotion workflow.14- A short-path workflow still requires promotion/folder initialization before delegated implementation.15- An orchestrator must create potential docs, promote to issue, branch, and active feature folder.16- Downstream research/spec agents depend on deterministic paths and identifiers.1718## Extension-First Execution Rule1920When the agent has access to the VS Code extension tool surface (in particular `vscode/runCommand` plus extension access), execute the lifecycle through the contributed extension commands first.2122Canonical extension command invocations:23- feature potential entry: `drm-copilot.newPotentialEntry` with `[`"-ShortName"`, `"${short-name}"`]`24- bug potential entry: `drm-copilot.newPotentialBugEntry` with `[`"--short-name"`, `"${short-name}"`]`25- potential-to-issue promotion: `drm-copilot.potentialToIssue` with `[`"--potential-path"`, `"${relativeFile}"`, `"--promotion-type"`, `"${promotion-type}"`, `"--work-mode"`, `"${work-mode}"`]`26- active feature folder creation: `drm-copilot.newActiveFeatureFolder` with `[`"--feature-name"`, `"${long-name}"`, `"--type"`, `"${promotion-type}"`, `"--issue-number"`, `"${issue-num}"`, `"--work-mode"`, `"${work-mode}"`]`2728Fallback rule:29- Use the direct script/CLI commands below only when the agent host cannot invoke VS Code extension commands directly.30- When falling back, preserve the same variable model, flags, and work-mode semantics.3132## Canonical Variables3334- `${promotion-type}`: `feature` or `bug`35- `${short-name}`: lowercase slug, hyphen-separated36- `${relativeFile}`: workspace-relative path to created potential entry markdown37- `${long-name}`: `${relativeFile}` filename without `.md`38- `${issue-num}`: promoted GitHub issue number39- `${feature-folder}`: active feature folder path40- `${plan-path}`: single canonical plan file path reused across planning and preflight revisions41- `${work-mode}`: `minor-audit`, `full-feature`, or `full-bug` (legacy `full` is accepted only as an alias for `full-feature`)42- `${short-path-flag}`: `--work-mode minor-audit` (mandatory for short-path promotion/folder creation)4344## Canonical Fallback Command Sequence45461) Create potential entry by type:47- feature: `VS Code command: `drm-copilot: New Potential Entry` (command ID: `drm-copilot.newPotentialEntry`) -ShortName ${short-name}`48- bug: `VS Code command: `drm-copilot: New Potential Bug Entry` (command ID: `drm-copilot.newPotentialBugEntry`) --short-name ${short-name}`49502) Promote potential doc:51- `VS Code command: `drm-copilot: Potential To Issue` (command ID: `drm-copilot.potentialToIssue`) --potential-path ${relativeFile} --promotion-type ${promotion-type} --work-mode ${work-mode}`52533) Create branch:54- `${promotion-type}/${short-name}-${issue-num}`55564) Create active feature folder:57- `VS Code command: `drm-copilot: New Active Feature Folder` (command ID: `drm-copilot.newActiveFeatureFolder`) --feature-name ${long-name} --type ${promotion-type} --issue-number ${issue-num} --work-mode ${work-mode}`5859## Canonical Fallback Short-Path Sequence (Minor Audit Mode)6061When orchestrator routing selects short path, promotion/folder initialization still occurs and MUST use `minor-audit` mode.62631) Promote potential doc with short-path flag:64- `VS Code command: `drm-copilot: Potential To Issue` (command ID: `drm-copilot.potentialToIssue`) --potential-path ${relativeFile} --promotion-type ${promotion-type} --work-mode minor-audit`65662) Create branch:67- `${promotion-type}/${short-name}-${issue-num}`68693) Create active feature folder with short-path flag:70- `VS Code command: `drm-copilot: New Active Feature Folder` (command ID: `drm-copilot.newActiveFeatureFolder`) --feature-name ${long-name} --type ${promotion-type} --issue-number ${issue-num} --work-mode minor-audit`71723a) Verify minor-audit folder integrity before proceeding:73- `${feature-folder}/issue.md` exists and contains `- Work Mode: minor-audit`74- `${feature-folder}/issue.md` contains an explicit `## Acceptance Criteria` section75- `${feature-folder}/spec.md` does not exist76- `${feature-folder}/user-story.md` does not exist77- if any check fails, stop and remediate before planning78794) Delegate minimal-audit plan creation to `atomic_planner` with directive:80- `DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED`81824a) Resolve and persist `${plan-path}` before delegation:83- reuse the earliest existing `plan*.md` in `${feature-folder}` when present84- otherwise create exactly one canonical plan file path and reuse it for all revisions85865) Require preflight validation via `atomic_executor` until:87- `PREFLIGHT: ALL CLEAR`88896) Execute plan Phase 0 only via executor and checkpoint evidence.90917) Branch:92- manual bootstrap: save state and stop ONLY when the initial user request explicitly opted into manual orchestration from the beginning,93- non-bootstrap: continue with constrained small-path development.9495Automation rule:96- do not introduce manual bootstrap, human-operator validation, or any other manual handoff later in orchestration unless that initial explicit opt-in exists97- if automation cannot proceed, record blocked automated state instead of asking for manual intervention98998) Validate delivery via executor against `issue.md`, then run reduced audit/remediation loop until ready-to-merge.100101## Required Outputs for Downstream Handoffs102103Before delegating research/spec/planning, provide:104- `${feature-folder}/issue.md`105- `${feature-folder}/spec.md` (or expected target path)106- `${feature-folder}/user-story.md` (or explicit `NONE`)107- latest research artifact path(s)108- constraints/APIs/invariants to preserve109110Mode-aware expectations:111- For `minor-audit`, the explicit `## Acceptance Criteria` section in `issue.md` is the primary acceptance-criteria source and `spec.md`/`user-story.md` may be intentionally absent by design.112- For `minor-audit`, do not infer acceptance criteria from other `issue.md` sections such as verification notes, next steps, or severity checklists.113- For `minor-audit`, `spec.md`/`user-story.md` must be treated as integrity failures when they appear unexpectedly in the active folder.114- For `full-feature`, `spec.md` and `user-story.md` are expected alongside `issue.md`.115- For `full-bug`, `spec.md` is expected alongside `issue.md`; `user-story.md` should be absent unless the requirements explicitly justify it.116117Selected-mode persistence requirements:118- Producer outputs MUST persist exactly one marker in `issue.md` metadata above the first `##` heading:119 - `- Work Mode: minor-audit`120 - `- Work Mode: full-feature`121 - `- Work Mode: full-bug`122- Persisted marker MUST represent selected mode after eligibility checks, not requested mode.123- If a legacy requested `full` path is accepted, tooling MUST normalize it to `full-feature` before persistence.124- If a requested `minor-audit` path is rejected by eligibility checks, tooling MUST fail closed to `full-feature`, emit fallback reason, and persist `- Work Mode: full-feature`.