product-line
Manage the portfolio of product paths — review, activate, archive, restore, promote, fork, and check revisit triggers across the product-path manifest
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- product-line
- type
- ops
- version
- v0.2
- description
- Manage the portfolio of product paths — review, activate, archive, restore, promote, fork, and check revisit triggers across the product-path manifest
- visual_tier
- visual
- argument-hint
- review | activate <path-id> | archive <path-id> | restore <path-id> | promote <path-id> | fork <label> [--from <skill>] | triggers
- interview_depth
- none
03 SKILL.md 正文
Pack Availability Guard
Before telling the user to run a skill from another project-local pack, check .agents/project.json.enabled_packs. If the target pack is not enabled, recommend /pack install <pack> instead of the target skill. Global skills are always valid. Skills from this same pack are valid because the current skill is already running from that pack.
Product Line — Product Path Portfolio Management
Manage product paths tracked in research/.progress.yaml. Product paths are research divergences — different products, apps, ICPs, expansion candidates, pivots, or competitive gaps — not git branches. Each path tracks its scope directory, status, evidence, pipeline stage, and revisit conditions.
Use activate when a deferred or revisit candidate path should become active research again. Use promote only when a research path graduates to an apps/{slug}/ code/app scope.
Prerequisites
research/.progress.yaml must exist for all modes except fork (which can create it). If missing, tell the user: "No product-path manifest found. Run /idea-scope-brief or /icp first — they create the manifest when multiple product directions emerge."
Manifest Schema
The canonical manifest lives at research/.progress.yaml:
active_paths:
- "cost-intel"
max_concurrent: 1
product_paths:
- id: "cost-intel"
label: "Cost Intel"
scope_path: "research/cost-intel/"
status: active # active | deferred | archived | promoted | revisit_candidate
source_skill: "icp"
reason: "Why this path exists"
archive_reason: null
archived_at: null
promoted_at: null
evidence_refs: []
revisit_trigger: null
next_skill: "/competitive-analysis"
pipeline_stage: "icp"
last_touched: "YYYY-MM-DD"
Backward Compatibility
- Read legacy
active_pathasactive_paths: [<value>]whenactive_pathsis absent. - Read legacy
status: abandonedasstatus: archived. - On writes, remove
active_path, write pluralactive_paths, and preferstatus: archivedinstead ofabandoned. - Treat
status: promotedas graduated to code/app scope, not reactivated research. - Exclude
research/_archive/paths from active-path selection and directory suggestions.
Modes
1. review — Portfolio Dashboard
Invocation: /product-line review
Present a dashboard comparing all paths:
| Path | Status | Scope | Pipeline Stage | Last Touched | Evidence Maturity | Revisit Trigger |
|---|
Group by active, deferred, revisit_candidate, archived, and promoted. For deferred and revisit_candidate paths, highlight the revisit trigger. For archived paths, show archive_reason and archived_at. For promoted paths, show promoted_at and the expected apps/{slug}/ scope.
Evidence maturity is derived from files under scope_path or evidence_refs:
- Early — only concept brief or initial ICP
- Developing — ICP plus competitive analysis, positioning, or journey map
- Mature — journey map plus metrics, GTM, monetization, or experiments
- Graduated — promoted to an app/code scope
When 3+ deferred or revisit-candidate paths exist with no recent activation, recommend /product-line triggers.
2. activate <path-id> — Reactivate Research
Invocation: /product-line activate <path-id>
- Validate the path exists and has status
deferredorrevisit_candidate. - Check
max_concurrentagainst the current active-path count. If at capacity, ask whether to deactivate another path or increasemax_concurrent. - Ensure
scope_pathis not underresearch/_archive/. If it is archived, tell the user to run/product-line restore <path-id>first. - Scan existing research files to infer
pipeline_stage. - Update the manifest:
- Set
status: active - Add the path ID to
active_paths - Set
last_touchedto today - Set
pipeline_stagefrom the scan when clearer than the existing value
- Set
- Recommend the next skill from
next_skillor the inferred pipeline stage.
3. archive <path-id> — Archive A Research Path
Invocation: /product-line archive <path-id>
- Validate the path exists and is not already
archivedor legacyabandoned. - Ask for a concise archive rationale.
- If
scope_pathisresearch/{slug}/and the directory exists, createresearch/_archive/as needed and move it toresearch/_archive/{slug}/. - Update the manifest:
- Set
status: archived - Remove the path ID from
active_paths - Set
scope_pathtoresearch/_archive/{slug}/when the directory was moved - Set
archive_reason,archived_at, andlast_touched
- Set
- Present confirmation with the archived directory and rationale.
4. restore <path-id> — Restore An Archived Path
Invocation: /product-line restore <path-id>
- Validate the path exists and has status
archivedor legacyabandoned. - If
scope_pathisresearch/_archive/{slug}/and the directory exists, move it back toresearch/{slug}/. - Ask whether to restore as
deferred(default) oractive. If active, enforcemax_concurrent. - Update the manifest:
- Set
status: deferredby default, oractiveonly when approved - Add to
active_pathsonly when restored as active - Set
scope_pathback toresearch/{slug}/ - Clear
archived_at; keep the old archive rationale inreasonor history, but setarchive_reason: null - Set
last_touchedto today
- Set
- Recommend
/product-line activate <path-id>if restored as deferred.
5. promote <path-id> — Graduate To App Scope
Invocation: /product-line promote <path-id>
Use this only when research is ready to become or connect to an app under apps/{slug}/.
- Validate the path exists and is not
archivedor legacyabandoned. - Derive
{slug}from the path ID orscope_path. - Confirm or create
apps/{slug}/during the monorepo scaffolding flow. If scaffolding requires another skill, recommend/scaffoldor the appropriate monorepo command instead of inventing app files here. - Keep research docs under
research/{slug}/as product evidence unless a separate scaffolder explicitly moves or links docs. - Update the manifest:
- Set
status: promoted - Remove the path ID from
active_paths - Set
promoted_atandlast_touchedto today - Keep
scope_pathpointing at the research evidence path
- Set
- Present the app graduation result and the next implementation/scaffolding command.
6. fork <label> [--from <skill>] — Create A New Path
Invocation: /product-line fork "Enterprise vertical" --from competitive-analysis
- Generate a stable product-path ID from the label.
- Confirm that the slug is the intended product/app name, not merely an ICP, audience, or segment label.
- Ask for supporting evidence, revisit trigger, and initial status (
activeordeferred). - Create or update
research/.progress.yamlwith the full schema fields. - Use
scope_path: research/{slug}/. - If status is
active, enforcemax_concurrentand createresearch/{slug}/. - If status is
deferred, create the manifest entry without forcing downstream research.
7. triggers — Check Revisit Conditions
Invocation: /product-line triggers
Scan paths with status: deferred or status: revisit_candidate and evaluate their revisit_trigger conditions:
- File-based triggers — check whether the referenced file exists.
- Evidence-based triggers — check active research files for relevant evidence.
- Time-based triggers — compare against today's date.
- External triggers — flag as requiring manual confirmation.
Classify each trigger as fired, pending, or manual. For fired triggers, recommend /product-line activate <path-id>.
Output
Update research/.progress.yaml. archive and restore may also move product-path directories between research/{slug}/ and research/_archive/{slug}/. promote may confirm or route creation of apps/{slug}/, but it does not move research docs.
Task Classification
When this skill produces follow-up work, file it by execution semantics:
- Immediately actionable implementation or documentation work goes in
tasks/todo.md. - Human-only external actions tied to automated steps go in
tasks/manual-todo.mdwith_(blocks: Step N.X)_or_(after: Step N.X)_; repo edits, SDK wiring, generated assets, local commands, tests, audits, and authenticated CLI/API work stay intasks/todo.md. - One-time condition-gated records, baselines, or future measurements go in
tasks/record-todo.mdwith source, condition, non-blocking reason, evidence, and promotion rule. - Cadence-based reviews, playtests, adoption checks, investor updates, retros, or docs-health checks go in
tasks/recurring-todo.mdwith cadence, owner/agent, next due, evidence path, and escalation conditions. - Do not put non-blocking records or recurring obligations in
tasks/todo.mdunless they have been explicitly promoted into current execution work.
Constraints
- Do not run downstream research or implementation skills.
- Do not treat archived, legacy abandoned, deferred, revisit-candidate, or promoted paths as active research targets.
- Do not use
promoteto mean "make active"; useactivate. - Do not use
archivewithout a documented rationale. - Respect
max_concurrentfor active paths. - Use product-path terminology. Never use "branch" to mean a product path.
Alignment Page
When this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page following ALIGNMENT-PAGE.md in this skill's directory. Output: alignment/product-line-{topic}.html.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
04 同仓库更多 Skills
source-checkout-allowed
Valid source-checkout-only fixture.
deck-install-valid
Valid deck install fixture.
codex-pack-guard-valid
Valid Codex Pack Availability Guard fixture.
codex-missing-skill-valid
Valid Codex missing skill fallback fixture.
codex-base-skill-fallback-valid
Valid Codex base skill fallback fixture.
claude-pack-guard-valid
Valid Claude Pack Availability Guard fixture.