@sushanglewis/lincoln 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.d.ts +3 -0
- package/dist/main.js +1231 -906
- package/dist/main.js.map +1 -1
- package/dist/postinstall.d.ts +3 -0
- package/dist/postinstall.js +18 -0
- package/dist/postinstall.js.map +1 -0
- package/framework/.claude/agents/_contract.md +79 -0
- package/framework/.claude/agents/architect.md +31 -0
- package/framework/.claude/agents/default.md +151 -0
- package/framework/.claude/agents/designer.md +33 -0
- package/framework/.claude/agents/engineer.md +42 -0
- package/framework/.claude/agents/external/NOTICES.md +12 -0
- package/framework/.claude/agents/external/everything-claude-code.manifest.yaml +23 -0
- package/framework/.claude/agents/external/oh-my-claudecode.manifest.yaml +26 -0
- package/framework/.claude/agents/external/wshobson-agents.manifest.yaml +23 -0
- package/framework/.claude/agents/frontend-engineer.md +32 -0
- package/framework/.claude/agents/knowledge-curator.md +28 -0
- package/framework/.claude/agents/pm.md +38 -0
- package/framework/.claude/agents/qa.md +28 -0
- package/framework/.claude/agents/release-coordinator.md +25 -0
- package/framework/.claude/agents/researcher.md +41 -0
- package/framework/.claude/harnesses/claude-code.yaml +15 -0
- package/framework/.claude/harnesses/codex.yaml +40 -0
- package/framework/.claude/harnesses/command-map.yaml +255 -0
- package/framework/.claude/harnesses/opencode.yaml +32 -0
- package/framework/.claude/harnesses/scenarios.yaml +45 -0
- package/framework/.claude/hooks/on-pr-event.sh +69 -0
- package/framework/.claude/hooks/on-session-start.sh +427 -0
- package/framework/.claude/hooks/on-stop.sh +104 -0
- package/framework/.claude/hooks/post-tool-use.sh +161 -0
- package/framework/.claude/hooks/pre-tool-use.sh +246 -0
- package/framework/.claude/schemas/agent-definition.schema.json +35 -0
- package/framework/.claude/schemas/benchmark-report.schema.json +148 -0
- package/framework/.claude/schemas/pm-to-ux-handoff.schema.yaml +128 -0
- package/framework/.claude/schemas/stage-definition.schema.json +233 -0
- package/framework/.claude/schemas/workflow-stage.schema.json +86 -0
- package/framework/.claude/schemas/workflow-template.schema.json +88 -0
- package/framework/.claude/settings.json +14 -0
- package/framework/.claude/skills/build-product-prototype/SKILL.md +35 -0
- package/framework/.claude/skills/build-product-prototype/prompts/main.md +78 -0
- package/framework/.claude/skills/clarify-requirements/SKILL.md +32 -0
- package/framework/.claude/skills/clarify-requirements/prompts/main.md +81 -0
- package/framework/.claude/skills/dependencies.yaml +139 -0
- package/framework/.claude/skills/draft-product-design/SKILL.md +40 -0
- package/framework/.claude/skills/draft-product-design/prompts/main.md +47 -0
- package/framework/.claude/skills/lc-analyze-frameworks/SKILL.md +43 -0
- package/framework/.claude/skills/lc-analyze-frameworks/prompts/main.md +95 -0
- package/framework/.claude/skills/lc-benchmark/SKILL.md +61 -0
- package/framework/.claude/skills/lc-build-codebase-knowledge/SKILL.md +38 -0
- package/framework/.claude/skills/lc-build-codebase-knowledge/prompts/build-codebase-knowledge.md +61 -0
- package/framework/.claude/skills/lc-collect-intelligence/SKILL.md +43 -0
- package/framework/.claude/skills/lc-collect-intelligence/prompts/main.md +72 -0
- package/framework/.claude/skills/lc-competitive-analysis/SKILL.md +43 -0
- package/framework/.claude/skills/lc-competitive-analysis/prompts/main.md +70 -0
- package/framework/.claude/skills/lc-explore-opensource/SKILL.md +36 -0
- package/framework/.claude/skills/lc-explore-opensource/prompts/explore-opensource.md +77 -0
- package/framework/.claude/skills/lc-first-principles/SKILL.md +43 -0
- package/framework/.claude/skills/lc-first-principles/prompts/main.md +73 -0
- package/framework/.claude/skills/lc-handoff/SKILL.md +34 -0
- package/framework/.claude/skills/lc-init-branch/SKILL.md +52 -0
- package/framework/.claude/skills/lc-market-research/SKILL.md +43 -0
- package/framework/.claude/skills/lc-market-research/prompts/main.md +79 -0
- package/framework/.claude/skills/lc-product-research/SKILL.md +43 -0
- package/framework/.claude/skills/lc-product-research/prompts/main.md +80 -0
- package/framework/.claude/skills/lc-research-report/SKILL.md +43 -0
- package/framework/.claude/skills/lc-research-report/prompts/main.md +90 -0
- package/framework/.claude/skills/lc-research-scope/SKILL.md +43 -0
- package/framework/.claude/skills/lc-research-scope/prompts/main.md +82 -0
- package/framework/.claude/skills/lc-setup/SKILL.md +68 -0
- package/framework/.claude/skills/lc-setup/prompts/main.md +88 -0
- package/framework/.claude/skills/lc-stage/SKILL.md +45 -0
- package/framework/.claude/skills/lc-stakeholder-research/SKILL.md +43 -0
- package/framework/.claude/skills/lc-stakeholder-research/prompts/main.md +65 -0
- package/framework/.claude/skills/lc-status/SKILL.md +25 -0
- package/framework/.claude/skills/lc-storytelling/SKILL.md +43 -0
- package/framework/.claude/skills/lc-storytelling/prompts/main.md +77 -0
- package/framework/.claude/skills/lc-wf/SKILL.md +54 -0
- package/framework/.claude/skills/lc-workflow/SKILL.md +48 -0
- package/framework/.claude/skills/lc-workflow/validators/validate.py +755 -0
- package/framework/.claude/skills/lc-workflow-router/SKILL.md +41 -0
- package/framework/.claude/skills/lc-workflow-router/prompts/intake-prompt.md +91 -0
- package/framework/.claude/skills/lc-workflow-router/prompts/router-prompt.md +44 -0
- package/framework/.claude/skills/plan-tdd-development/SKILL.md +31 -0
- package/framework/.claude/skills/plan-tdd-development/prompts/main.md +44 -0
- package/framework/.claude/skills/process-interview/SKILL.md +32 -0
- package/framework/.claude/skills/process-interview/prompts/main.md +47 -0
- package/framework/.claude/skills/propose-with-openspec/SKILL.md +37 -0
- package/framework/.claude/skills/propose-with-openspec/prompts/main.md +53 -0
- package/framework/.claude/skills/split-to-github/SKILL.md +32 -0
- package/framework/.claude/skills/split-to-github/prompts/main.md +42 -0
- package/framework/.claude/skills/sync-to-knowledge/SKILL.md +35 -0
- package/framework/.claude/skills/sync-to-knowledge/prompts/main.md +54 -0
- package/framework/.claude/skills/workflow-continue/SKILL.md +24 -0
- package/framework/.claude/skills/workflow-continue/prompts/main.md +25 -0
- package/framework/.claude/stages/build-codebase-knowledge.yaml +42 -0
- package/framework/.claude/stages/clarify.yaml +59 -0
- package/framework/.claude/stages/explore-opensource.yaml +40 -0
- package/framework/.claude/stages/implement.yaml +60 -0
- package/framework/.claude/stages/ingest.yaml +40 -0
- package/framework/.claude/stages/lc-analyze-frameworks.yaml +37 -0
- package/framework/.claude/stages/lc-collect-intelligence.yaml +37 -0
- package/framework/.claude/stages/lc-competitive-analysis.yaml +37 -0
- package/framework/.claude/stages/lc-first-principles.yaml +37 -0
- package/framework/.claude/stages/lc-market-research.yaml +37 -0
- package/framework/.claude/stages/lc-product-research.yaml +37 -0
- package/framework/.claude/stages/lc-research-report.yaml +38 -0
- package/framework/.claude/stages/lc-research-scope.yaml +38 -0
- package/framework/.claude/stages/lc-stakeholder-research.yaml +37 -0
- package/framework/.claude/stages/lc-storytelling.yaml +37 -0
- package/framework/.claude/stages/product-design-docs.yaml +66 -0
- package/framework/.claude/stages/product-prototype.yaml +53 -0
- package/framework/.claude/stages/propose.yaml +45 -0
- package/framework/.claude/stages/split.yaml +41 -0
- package/framework/.claude/stages/sync-knowledge.yaml +49 -0
- package/framework/.claude/stages/tdd-development-plan.yaml +43 -0
- package/framework/.claude/stages/workflow-router.yaml +45 -0
- package/framework/.claude/templates/solo-workflow-context.yaml +23 -0
- package/framework/.claude/workflows/README.md +93 -0
- package/framework/.claude/workflows/bug-fix.yaml +81 -0
- package/framework/.claude/workflows/design-spike.yaml +55 -0
- package/framework/.claude/workflows/existing-project-iteration.yaml +106 -0
- package/framework/.claude/workflows/interview-to-knowledge.yaml +189 -0
- package/framework/.claude/workflows/oss-first-design.yaml +100 -0
- package/framework/.claude/workflows/pm-research.yaml +115 -0
- package/framework/.claude-plugin/hooks.json +6 -0
- package/framework/.claude-plugin/marketplace.json +32 -0
- package/framework/.claude-plugin/plugin.json +57 -0
- package/framework/.version-bump.json +43 -0
- package/framework/CLAUDE.md +140 -0
- package/framework/CONTRIBUTING.md +219 -0
- package/framework/LICENSE +21 -0
- package/framework/README.en.md +139 -0
- package/framework/README.md +139 -0
- package/framework/RELEASE.md +334 -0
- package/framework/SKILL.md +24 -0
- package/framework/USAGE.md +356 -0
- package/framework/manifest.json +1214 -0
- package/framework/requirements.txt +4 -0
- package/framework/scripts/__init__.py +0 -0
- package/framework/scripts/build_codebase_knowledge.py +76 -0
- package/framework/scripts/bump_version.py +181 -0
- package/framework/scripts/check-dependency-drift.py +69 -0
- package/framework/scripts/check-harness-drift.sh +57 -0
- package/framework/scripts/check-main-merge-hygiene.py +128 -0
- package/framework/scripts/check-skill-dependencies.sh +124 -0
- package/framework/scripts/init-lincoln-branch.sh +300 -0
- package/framework/scripts/init-project.sh +184 -0
- package/framework/scripts/lc-benchmark-cli.py +66 -0
- package/framework/scripts/lincoln-audit.py +288 -0
- package/framework/scripts/lincoln-setup.py +651 -0
- package/framework/scripts/lincoln-status.py +448 -0
- package/framework/scripts/lincoln_benchmark.py +224 -0
- package/framework/scripts/lincoln_benchmark_eval.py +104 -0
- package/framework/scripts/lincoln_benchmark_metrics.py +818 -0
- package/framework/scripts/lincoln_benchmark_report.py +141 -0
- package/framework/scripts/lincoln_command_map.py +289 -0
- package/framework/scripts/lincoln_dependency_manager.py +335 -0
- package/framework/scripts/lincoln_documents.py +175 -0
- package/framework/scripts/lincoln_harness_adapter.py +319 -0
- package/framework/scripts/lincoln_index.py +255 -0
- package/framework/scripts/lincoln_paths.py +198 -0
- package/framework/scripts/lincoln_prd.py +227 -0
- package/framework/scripts/lincoln_role.py +46 -0
- package/framework/scripts/lincoln_scenario.py +59 -0
- package/framework/scripts/lincoln_session_start_metrics.py +71 -0
- package/framework/scripts/lincoln_skill_prompt.py +48 -0
- package/framework/scripts/lincoln_trace.py +335 -0
- package/framework/scripts/lincoln_workflow.py +199 -0
- package/framework/scripts/list-active-lincoln-branches.sh +87 -0
- package/framework/scripts/package-lincoln-plugin.py +340 -0
- package/framework/scripts/run-infrastructure-tests.py +84 -0
- package/framework/scripts/stage_loader.py +1071 -0
- package/framework/scripts/static-check.sh +356 -0
- package/framework/scripts/sync-external-agents.sh +210 -0
- package/framework/scripts/sync-framework-package.mjs +218 -0
- package/framework/scripts/task_tool_guard.py +213 -0
- package/framework/scripts/track-artifacts.py +140 -0
- package/framework/scripts/validate_stage.py +350 -0
- package/{README.md → framework/tools/lincoln/README.md} +4 -4
- package/framework/tools/lincoln/package-lock.json +3349 -0
- package/framework/tools/lincoln/package.json +48 -0
- package/framework/tools/lincoln/src/cli.tsx +60 -0
- package/framework/tools/lincoln/src/components/AudioMeter.tsx +34 -0
- package/framework/tools/lincoln/src/components/CancelledScreen.tsx +11 -0
- package/framework/tools/lincoln/src/components/DevicesMenu.tsx +79 -0
- package/framework/tools/lincoln/src/components/HintBar.tsx +25 -0
- package/framework/tools/lincoln/src/components/LogView.tsx +36 -0
- package/framework/tools/lincoln/src/components/ModelMenu.tsx +122 -0
- package/framework/tools/lincoln/src/components/ReadyScreen.tsx +54 -0
- package/framework/tools/lincoln/src/components/RecordingApp.tsx +211 -0
- package/framework/tools/lincoln/src/components/RecordingScreen.tsx +41 -0
- package/framework/tools/lincoln/src/components/SelectMenu.tsx +53 -0
- package/framework/tools/lincoln/src/components/StatusPanel.tsx +52 -0
- package/framework/tools/lincoln/src/components/StopConfirmation.tsx +32 -0
- package/framework/tools/lincoln/src/config/args.ts +35 -0
- package/framework/tools/lincoln/src/config/loadConfig.ts +81 -0
- package/framework/tools/lincoln/src/config/resolveConfig.ts +85 -0
- package/framework/tools/lincoln/src/devices/listDevices.ts +11 -0
- package/framework/tools/lincoln/src/devices/parseDevices.ts +25 -0
- package/framework/tools/lincoln/src/hooks/useKeyHandler.ts +63 -0
- package/framework/tools/lincoln/src/main.tsx +4 -0
- package/framework/tools/lincoln/src/models/models.ts +34 -0
- package/framework/tools/lincoln/src/models/runWarmup.ts +46 -0
- package/framework/tools/lincoln/src/models/warmupProgress.ts +30 -0
- package/framework/tools/lincoln/src/recording/spawnRecorder.ts +127 -0
- package/framework/tools/lincoln/src/recording/useRecorder.ts +146 -0
- package/framework/tools/lincoln/src/utils/amplitudeToMeter.ts +4 -0
- package/framework/tools/lincoln/src/utils/formatDuration.ts +6 -0
- package/framework/tools/lincoln/src/utils/sessionId.ts +25 -0
- package/framework/tools/lincoln/tests/cli.test.tsx +52 -0
- package/framework/tools/lincoln/tests/components/AudioMeter.test.tsx +31 -0
- package/framework/tools/lincoln/tests/components/CancelledScreen.test.tsx +12 -0
- package/framework/tools/lincoln/tests/components/ReadyScreen.test.tsx +68 -0
- package/framework/tools/lincoln/tests/components/RecordingApp.menus.test.tsx +158 -0
- package/framework/tools/lincoln/tests/components/RecordingApp.test.tsx +248 -0
- package/framework/tools/lincoln/tests/components/RecordingScreen.test.tsx +37 -0
- package/framework/tools/lincoln/tests/components/SelectMenu.test.tsx +59 -0
- package/framework/tools/lincoln/tests/components/StopConfirmation.test.tsx +38 -0
- package/framework/tools/lincoln/tests/config/args.test.ts +49 -0
- package/framework/tools/lincoln/tests/config/loadConfig.test.ts +59 -0
- package/framework/tools/lincoln/tests/config/resolveConfig.test.ts +72 -0
- package/framework/tools/lincoln/tests/devices/parseDevices.test.ts +21 -0
- package/framework/tools/lincoln/tests/hooks/useKeyHandler.enabled.test.tsx +44 -0
- package/framework/tools/lincoln/tests/hooks/useKeyHandler.test.tsx +130 -0
- package/framework/tools/lincoln/tests/models/models.test.ts +27 -0
- package/framework/tools/lincoln/tests/models/warmupProgress.test.ts +25 -0
- package/framework/tools/lincoln/tests/recording/spawnRecorder.test.ts +85 -0
- package/framework/tools/lincoln/tests/recording/useRecorder.test.tsx +172 -0
- package/framework/tools/lincoln/tests/utils/amplitudeToMeter.test.ts +22 -0
- package/framework/tools/lincoln/tests/utils/formatDuration.test.ts +11 -0
- package/framework/tools/lincoln/tests/utils/sessionId.test.ts +30 -0
- package/framework/tools/lincoln/tsconfig.json +22 -0
- package/framework/tools/lincoln/tsconfig.tests.json +10 -0
- package/framework/tools/lincoln/tsup.config.ts +17 -0
- package/framework/tools/lincoln/vitest.config.ts +20 -0
- package/framework/tools/lincoln-installer/package-lock.json +3611 -0
- package/framework/tools/lincoln-installer/package.json +53 -0
- package/framework/tools/lincoln-installer/src/cli.tsx +63 -0
- package/framework/tools/lincoln-installer/src/components/HarnessSelectScreen.tsx +43 -0
- package/framework/tools/lincoln-installer/src/components/InstallerApp.tsx +98 -0
- package/framework/tools/lincoln-installer/src/components/OptionsScreen.tsx +56 -0
- package/framework/tools/lincoln-installer/src/components/ProgressScreen.tsx +25 -0
- package/framework/tools/lincoln-installer/src/components/ResultScreen.tsx +40 -0
- package/framework/tools/lincoln-installer/src/components/SelectMenu.tsx +73 -0
- package/framework/tools/lincoln-installer/src/components/SummaryScreen.tsx +49 -0
- package/framework/tools/lincoln-installer/src/components/UpdateApp.tsx +135 -0
- package/framework/tools/lincoln-installer/src/components/WelcomeScreen.tsx +22 -0
- package/framework/tools/lincoln-installer/src/config/args.ts +76 -0
- package/framework/tools/lincoln-installer/src/config/resolveConfig.ts +33 -0
- package/framework/tools/lincoln-installer/src/config/updateArgs.ts +67 -0
- package/framework/tools/lincoln-installer/src/hooks/useSetup.ts +149 -0
- package/framework/tools/lincoln-installer/src/main.tsx +11 -0
- package/framework/tools/lincoln-installer/src/types.ts +19 -0
- package/framework/tools/lincoln-installer/src/update-main.tsx +11 -0
- package/framework/tools/lincoln-installer/src/update.tsx +90 -0
- package/framework/tools/lincoln-installer/src/utils/detectHarness.ts +51 -0
- package/framework/tools/lincoln-installer/src/utils/runSetup.ts +62 -0
- package/framework/tools/lincoln-installer/src/utils/updateRelease.ts +454 -0
- package/framework/tools/lincoln-installer/tests/components/InstallerApp.test.tsx +88 -0
- package/framework/tools/lincoln-installer/tests/components/SelectMenu.test.tsx +26 -0
- package/framework/tools/lincoln-installer/tests/components/UpdateApp.test.tsx +170 -0
- package/framework/tools/lincoln-installer/tests/components/screens.test.tsx +310 -0
- package/framework/tools/lincoln-installer/tests/config/args.test.ts +66 -0
- package/framework/tools/lincoln-installer/tests/config/resolveConfig.test.ts +75 -0
- package/framework/tools/lincoln-installer/tests/config/updateArgs.test.ts +52 -0
- package/framework/tools/lincoln-installer/tests/hooks/useSetup.test.tsx +213 -0
- package/framework/tools/lincoln-installer/tests/update.test.tsx +108 -0
- package/framework/tools/lincoln-installer/tests/utils/detectHarness.test.ts +40 -0
- package/framework/tools/lincoln-installer/tests/utils/runSetup.test.ts +45 -0
- package/framework/tools/lincoln-installer/tests/utils/updateRelease.test.ts +559 -0
- package/framework/tools/lincoln-installer/tsconfig.json +22 -0
- package/framework/tools/lincoln-installer/tsconfig.tests.json +8 -0
- package/framework/tools/lincoln-installer/tsup.config.ts +17 -0
- package/framework/tools/lincoln-installer/vitest.config.ts +20 -0
- package/framework/tools/lincoln-record/Cargo.lock +1896 -0
- package/framework/tools/lincoln-record/Cargo.toml +24 -0
- package/framework/tools/lincoln-record/diarize/diarize.py +117 -0
- package/framework/tools/lincoln-record/diarize/merge.py +55 -0
- package/framework/tools/lincoln-record/src/audio/capture/microphone.rs +194 -0
- package/framework/tools/lincoln-record/src/audio/capture/mod.rs +1 -0
- package/framework/tools/lincoln-record/src/audio/devices.rs +20 -0
- package/framework/tools/lincoln-record/src/audio/mod.rs +5 -0
- package/framework/tools/lincoln-record/src/audio/resampler.rs +44 -0
- package/framework/tools/lincoln-record/src/audio/saver.rs +87 -0
- package/framework/tools/lincoln-record/src/audio/source.rs +104 -0
- package/framework/tools/lincoln-record/src/cli.rs +96 -0
- package/framework/tools/lincoln-record/src/config.rs +135 -0
- package/framework/tools/lincoln-record/src/lib.rs +6 -0
- package/framework/tools/lincoln-record/src/main.rs +242 -0
- package/framework/tools/lincoln-record/src/model/mod.rs +248 -0
- package/framework/tools/lincoln-record/src/output/metadata.rs +30 -0
- package/framework/tools/lincoln-record/src/output/mod.rs +2 -0
- package/framework/tools/lincoln-record/src/output/transcript.rs +42 -0
- package/framework/tools/lincoln-record/src/transcription/diarization.rs +64 -0
- package/framework/tools/lincoln-record/src/transcription/mod.rs +3 -0
- package/framework/tools/lincoln-record/src/transcription/provider.rs +43 -0
- package/framework/tools/lincoln-record/src/transcription/whisper.rs +176 -0
- package/framework/tools/lincoln-record/tests/cli_args.rs +103 -0
- package/framework/tools/lincoln-record/tests/config_test.rs +70 -0
- package/framework/tools/lincoln-record/tests/devices_test.rs +23 -0
- package/framework/tools/lincoln-record/tests/diarization_tests.rs +101 -0
- package/framework/tools/lincoln-record/tests/integration_tests.rs +44 -0
- package/framework/tools/lincoln-record/tests/model_test.rs +68 -0
- package/framework/tools/lincoln-record/tests/transcription_tests.rs +73 -0
- package/package.json +19 -13
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lc-workflow-router
|
|
3
|
+
description: Use at the start of a Lincoln session to run session intake (recon, situation judgment, Johari confirmation) and select the most appropriate workflow template.
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Lincoln Workflow Router
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Using [lc-workflow-router] to run session intake and select the most appropriate workflow template.
|
|
12
|
+
|
|
13
|
+
Runs session intake on a cold start — overview recon (摸排), five-element situation judgment, Johari confirmation — then inspects the confirmed context and chooses a workflow template from `.claude/workflows/`.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- At session start when the hook injects 「=== Lincoln 开场引导 ===」(no state file, or `current_stage: not_started`).
|
|
18
|
+
- At session start when `<process_slug>/workflow-stage.yaml` has no `workflow.template`.
|
|
19
|
+
- When the human PM says "重新评估工作流" or asks to switch templates.
|
|
20
|
+
|
|
21
|
+
## Inputs
|
|
22
|
+
|
|
23
|
+
- `prompts/intake-prompt.md` — the intake procedure to run first on a cold start
|
|
24
|
+
- Repository root contents (overview recon only, ≤ 8 read-only operations)
|
|
25
|
+
- `<process_slug>/workflow-stage.yaml`
|
|
26
|
+
- Human's stated intent (interview, bug fix, design spike, existing project, etc.)
|
|
27
|
+
|
|
28
|
+
## Outputs
|
|
29
|
+
|
|
30
|
+
- `.context/lc-intake.md` — recon summary, situation judgment, confirmation record (session-level, gitignored)
|
|
31
|
+
- Recommended `workflow.template` name
|
|
32
|
+
- Recommended `current_run.current_stage`
|
|
33
|
+
- Confidence score and 1-3 confirmation questions if needed
|
|
34
|
+
|
|
35
|
+
## Rules
|
|
36
|
+
|
|
37
|
+
- On a cold start (hook guidance block or `current_stage: not_started`), follow `prompts/intake-prompt.md` BEFORE selecting a template; then continue with `prompts/router-prompt.md`.
|
|
38
|
+
- Do not proceed with any implementation until the PM confirms or overrides the recommended template.
|
|
39
|
+
- If context is ambiguous, prefer the simplest template that matches the stated intent.
|
|
40
|
+
- Document the reasoning in `current_run.context_assessment`.
|
|
41
|
+
- When reporting the routing decision to the PM, declare: `Using lc-workflow-router to select workflow: <name> because <reason>`, and record it in `.context/lc-intake.md`.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# session-intake prompt(开场引导)
|
|
2
|
+
|
|
3
|
+
You are the Lincoln Session Intake guide. 当会话开始但 Lincoln 还没有可驱动的工作状态(无状态文件,或 `current_stage: not_started`)时,你的任务是基于当前可掌握的信息,自然地指导与辅助用户:先摸排,再判断,经确认后有策略地开展。
|
|
4
|
+
|
|
5
|
+
本流程由会话启动 hook 的「=== Lincoln 开场引导 ===」指令块触发,也是 lc-workflow-router 选择模板之前的前置步骤。
|
|
6
|
+
|
|
7
|
+
## 何时触发
|
|
8
|
+
|
|
9
|
+
- hook 输出「=== Lincoln 开场引导 ===」块(fresh repo、issue 号不明、或 `current_stage: not_started`)。
|
|
10
|
+
- 用户对当前要做什么明显迷茫("我不知道从哪开始"),即使状态文件已存在。
|
|
11
|
+
|
|
12
|
+
活跃阶段(`current_stage` 为进行中阶段)不触发本流程——按阶段上下文继续工作即可。
|
|
13
|
+
|
|
14
|
+
## 第一步:摸排(概览级侦察)
|
|
15
|
+
|
|
16
|
+
目的:用最少的读取建立"这个仓库/这个用户大概处于什么状态"的整体印象。**概览级,不是代码审查。**
|
|
17
|
+
|
|
18
|
+
信号清单(按价值排序,够用就停):
|
|
19
|
+
|
|
20
|
+
| 信号 | 获取方式 | 能判断什么 |
|
|
21
|
+
|------|----------|-----------|
|
|
22
|
+
| 顶层结构 | `ls` 仓库根目录 | 有没有代码、knowledge/、工作包、文档 |
|
|
23
|
+
| README 前 100 行 | Read(限前 100 行) | 项目定位、面向谁、当前阶段自述 |
|
|
24
|
+
| `knowledge/00-index.md` | Read(若存在) | 已沉淀的业务/技术知识 |
|
|
25
|
+
| 开放 issues | `gh issue list --limit 10`(gh 不可用则跳过) | 已知问题与优先级 |
|
|
26
|
+
| `{process_slug}/documents.yaml` | Read(若存在) | 工作包内已有产物与确认状态 |
|
|
27
|
+
| interviews / recordings 存在性 | `ls`(不读内容) | 是否有待处理的访谈原料 |
|
|
28
|
+
| 用户首条消息 | 对话上下文 | 最直接的意图信号 |
|
|
29
|
+
|
|
30
|
+
硬限制:
|
|
31
|
+
|
|
32
|
+
- 只读操作总数 **≤ 8 次**。超过即停止摸排,用已有信息做判断。
|
|
33
|
+
- **不读源码文件内容**(不看 `src/`、`tools/`、`scripts/` 的实现)。
|
|
34
|
+
- **不调用深度扫描技能**(如 `lc-build-codebase-knowledge`)——那是后续阶段的事。
|
|
35
|
+
- 除 `.context/lc-intake.md`(session 级记录,gitignored)外**不写任何文件**。
|
|
36
|
+
- `gh` 不可用:跳过 issues 信号,在判断中标注该缺失,不阻塞。
|
|
37
|
+
|
|
38
|
+
## 第二步:判断(处境评估)
|
|
39
|
+
|
|
40
|
+
基于摸排结果与用户首条消息,输出五要素判断,并给出置信度:
|
|
41
|
+
|
|
42
|
+
1. **角色**:用户大概是谁(PM / 工程师 / 设计师 / 独立 maker / 首次接触者)。
|
|
43
|
+
2. **流程位置**:当前处于 Lincoln 流程的哪个位置(未初始化 / 工作包未启动 / 某阶段中途 / 游离于流程外的自由任务)。
|
|
44
|
+
3. **问题**:用户面前最可能的 1-2 个问题或任务是什么。
|
|
45
|
+
4. **目标**:用户想达到的状态(尽可能引用用户原话)。
|
|
46
|
+
5. **象限初判**:对每个关键目标项,初判其 Johari 认知象限(见下)。
|
|
47
|
+
|
|
48
|
+
置信度:high / medium / low。信息不足时**不编造**——直接说"信息不足",把缺口变成下一步的问题。
|
|
49
|
+
|
|
50
|
+
将摸排摘要与判断写入 `.context/lc-intake.md`(字段:摸排摘要 ≤10 行 / 处境判断 / 确认记录)。
|
|
51
|
+
|
|
52
|
+
## 第三步:询问和确认(Johari 认知象限)
|
|
53
|
+
|
|
54
|
+
把判断展示给用户,然后按象限设计确认动作。**每轮最多 3 个问题**;高置信度时可以只问 1 个。
|
|
55
|
+
|
|
56
|
+
| 象限 | 含义 | 策略 |
|
|
57
|
+
|------|------|------|
|
|
58
|
+
| 知道自己知道 | 用户清楚目标与做法 | 复述确认题:用你的话复述,防会错意 |
|
|
59
|
+
| 知道自己不知道 | 用户清楚但缺信息/方法 | 直接回答 + coach:给背景、给选项,不反问 |
|
|
60
|
+
| 不知道自己知道 | 仓库里已有答案(knowledge/issue/文档) | 展示已有资产:"这些已有产物可能已经回答了你的问题" |
|
|
61
|
+
| 不知道自己不知道 | 盲区:未意识到的风险或缺失 | 探查题:用具体场景暴露风险,而非抽象提问 |
|
|
62
|
+
|
|
63
|
+
原则:
|
|
64
|
+
|
|
65
|
+
- 问题必须具体、可回答;避免"你想要什么?"式的空泛提问。
|
|
66
|
+
- 不替用户答题:宁可多问一轮,不假设。
|
|
67
|
+
- 用户的纠正直接更新 `.context/lc-intake.md` 的确认记录。
|
|
68
|
+
|
|
69
|
+
## 第四步:有策略的开展(收敛与路由)
|
|
70
|
+
|
|
71
|
+
**收敛标准**(两条都满足才允许进入执行):
|
|
72
|
+
|
|
73
|
+
1. 每个目标都有**明确的验收标准**(怎样算完成,用户认可)。
|
|
74
|
+
2. 执行路径已确定(走哪个工作流 / 哪个阶段 / 哪条 solo 路径)。
|
|
75
|
+
|
|
76
|
+
收敛后按处境路由,脚本一律由你代为执行,不让用户敲命令:
|
|
77
|
+
|
|
78
|
+
| 处境 | 路由 |
|
|
79
|
+
|------|------|
|
|
80
|
+
| 无工作包 + 团队协作意图(有 issue 号) | 代为执行 `scripts/init-lincoln-branch.sh --issue-number <N>`,进入 team 工作流 |
|
|
81
|
+
| 无工作包 + 个人快速迭代意图 | 转 router-prompt.md 选择模板,用 `lc-wf-*` 启动 solo 工作流 |
|
|
82
|
+
| 已有工作包且 `current_stage: not_started` | 代为执行 `scripts/stage_loader.py --stage <stage> --action validate-entry`,进入第一阶段 |
|
|
83
|
+
| 与 Lincoln 流程无关的独立问题 | 直接回答,不强行套流程 |
|
|
84
|
+
|
|
85
|
+
## 禁忌
|
|
86
|
+
|
|
87
|
+
- 确认完成前**不做任何实现性工作**(不写代码、不改文档、不动状态文件)。
|
|
88
|
+
- 不替用户回答问题,不编造摸排中没看到的证据。
|
|
89
|
+
- 无 issue 号时不擅自创建 GitHub issue;先问。
|
|
90
|
+
- 不把摸排做成代码审查:超出 8 次只读上限就是失败。
|
|
91
|
+
- 用户已明确表示熟悉流程并要求直接执行时,尊重其选择,把确认压缩到最低(复述一句 + 一个确认题)。
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# workflow-router prompt
|
|
2
|
+
|
|
3
|
+
You are the Lincoln Workflow Router. Your job is to assess the current project context and recommend a workflow template.
|
|
4
|
+
|
|
5
|
+
前置依赖:在冷启动(hook 输出「=== Lincoln 开场引导 ===」,或 `current_stage: not_started`)时,先按 `prompts/intake-prompt.md` 完成 摸排 → 判断 → Johari 确认,再进入下面的模板选择;该流程的摸排摘要、处境判断与确认记录保存在 `.context/lc-intake.md`,可直接复用,不要重复侦察。
|
|
6
|
+
|
|
7
|
+
## Context signals
|
|
8
|
+
|
|
9
|
+
1. Repository structure:
|
|
10
|
+
- Does `knowledge/` already contain feature/requirement notes?
|
|
11
|
+
- Does `src/` or equivalent source directory exist?
|
|
12
|
+
- Are there open GitHub Issues or a `.github/linked-issues.yaml`?
|
|
13
|
+
- Is there an `{process_slug}/interviews/` directory with recordings?
|
|
14
|
+
|
|
15
|
+
2. `<process_slug>/workflow-stage.yaml`:
|
|
16
|
+
- What is `current_run.current_stage`?
|
|
17
|
+
- Have any stages been completed?
|
|
18
|
+
|
|
19
|
+
3. User intent from the opening message:
|
|
20
|
+
- Interview recording → `interview-to-knowledge`
|
|
21
|
+
- Bug report / specific issue → `bug-fix`
|
|
22
|
+
- "Design this" / "Spike" → `design-spike`
|
|
23
|
+
- "We have an existing codebase" → `existing-project-iteration`
|
|
24
|
+
- "Find open source solutions" → `oss-first-design`
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
1. Confirm current stage from the hook-loaded state (read `<process_slug>/workflow-stage.yaml` only if needed).
|
|
29
|
+
2. List top-level directories and key files to assess context.
|
|
30
|
+
3. Choose the best template from `.claude/workflows/`.
|
|
31
|
+
4. If confidence is low, ask the PM at most 3 clarifying questions.
|
|
32
|
+
5. Once confirmed, set `current_run.workflow_template` and `current_stage` in `<process_slug>/workflow-stage.yaml` via `scripts/stage_loader.py`.
|
|
33
|
+
6. Write a one-sentence `current_run.context_assessment` summary.
|
|
34
|
+
|
|
35
|
+
## Output format
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
workflow_template: <template-name>
|
|
39
|
+
current_stage: <stage-id>
|
|
40
|
+
confidence: high | medium | low
|
|
41
|
+
reasoning: <one sentence>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Do not execute the workflow yourself. Only select and configure it.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-tdd-development
|
|
3
|
+
description: 基于已确认产品设计和原型生成 TDD 研发计划
|
|
4
|
+
triggers:
|
|
5
|
+
- "生成 TDD 研发计划"
|
|
6
|
+
- "plan-tdd-development"
|
|
7
|
+
inputs:
|
|
8
|
+
- name: session_id
|
|
9
|
+
description: 访谈会话 ID
|
|
10
|
+
required: true
|
|
11
|
+
- name: design_id
|
|
12
|
+
description: 产品设计 ID
|
|
13
|
+
required: true
|
|
14
|
+
outputs:
|
|
15
|
+
- "{process_slug}/pages/docs/tdd-plan.html"
|
|
16
|
+
required_tools:
|
|
17
|
+
- Read
|
|
18
|
+
- Bash
|
|
19
|
+
- Write
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# plan-tdd-development
|
|
23
|
+
|
|
24
|
+
## Purpose
|
|
25
|
+
|
|
26
|
+
Using [plan-tdd-development] to 基于已确认产品设计和原型生成 TDD 研发计划.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
基于已确认产品设计、字段规格、UI 规格和 Pencil 原型生成 TDD 研发计划。
|
|
30
|
+
|
|
31
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# plan-tdd-development
|
|
2
|
+
|
|
3
|
+
You are executing the Lincoln workflow step `tdd-development-plan`: turn the confirmed product design and prototype into a TDD development plan.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Create `{process_slug}/pages/docs/tdd-plan.html` as the bridge from product design to OpenSpec and GitHub Issues.
|
|
8
|
+
|
|
9
|
+
## Input
|
|
10
|
+
|
|
11
|
+
- `session_id`: the interview session identifier
|
|
12
|
+
- `design_id`: the product design identifier
|
|
13
|
+
|
|
14
|
+
## 子技能准备
|
|
15
|
+
|
|
16
|
+
在执行本 prompt 前:
|
|
17
|
+
1. 调用 `superpowers:writing-plans` 规划 `tdd-plan.html` 结构。
|
|
18
|
+
2. 遵循 `superpowers:test-driven-development` 方法论:确保每个任务切片都是“先写失败测试 → 最小实现 → 重构”序列。
|
|
19
|
+
3. 在 `tdd-plan.html` 的 Markdown source 头部加入:
|
|
20
|
+
`> **Required sub-skill:** Use superpowers:test-driven-development for all implementation`
|
|
21
|
+
|
|
22
|
+
## Steps
|
|
23
|
+
|
|
24
|
+
1. Verify that `{process_slug}/pages/docs/ui-spec.html` contains `<!-- prototype-status: approved -->` or `[x] PM 已确认原型`.
|
|
25
|
+
2. Confirm `{process_slug}/designs/<design_id>/prototype.pen`, `{process_slug}/pages/docs/fields.html`, and the design review package exist.
|
|
26
|
+
3. Read the confirmed design docs and inspect the `.pen` through Pencil tools if visual structure is needed.
|
|
27
|
+
4. Write `{process_slug}/pages/docs/tdd-plan.html` using `.claude/templates/issue-package/page-doc.html.tpl`. It must embed Markdown in `<script type="text/markdown" id="docSource">` with a `<!-- version: v1.0 -->` marker and meta tags (`doc-title`, `nav-group`, `doc-version`, `doc-uid`). Content must include:
|
|
28
|
+
- Source links to `requirements.html`, `design-review.html`, `fields.html`, `ui-spec.html`, and `prototype.pen`
|
|
29
|
+
- Acceptance criteria mapping
|
|
30
|
+
- Test scenarios grouped by user workflow
|
|
31
|
+
- Red/green/refactor implementation sequence
|
|
32
|
+
- Unit, integration, contract, UI, and regression test boundaries
|
|
33
|
+
- Data fixtures and validation cases
|
|
34
|
+
- Task slices suitable for OpenSpec tasks and GitHub Issues
|
|
35
|
+
- Risks, dependencies, and out-of-scope items
|
|
36
|
+
5. Add `<!-- status: ready-for-openspec -->` when the plan is complete.
|
|
37
|
+
6. Run `python scripts/stage_loader.py --stage tdd-development-plan --action record-artifacts`.
|
|
38
|
+
|
|
39
|
+
## Rules
|
|
40
|
+
|
|
41
|
+
- Keep the plan executable by an engineer without requiring extra product decisions.
|
|
42
|
+
- Every task slice must map back to a design artifact and acceptance criterion.
|
|
43
|
+
- Do not generate OpenSpec artifacts in this step.
|
|
44
|
+
- After completion, tell the user to run: `claude propose-with-openspec <session_id> <design_id> <change_name>`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: process-interview
|
|
3
|
+
description: 处理访谈录音,生成转写、摘要和初始洞察
|
|
4
|
+
triggers:
|
|
5
|
+
- "处理访谈录音"
|
|
6
|
+
- "process-interview"
|
|
7
|
+
inputs:
|
|
8
|
+
- name: recording_path
|
|
9
|
+
description: 录音文件路径,如 {process_slug}/recordings/2026-06-27-stakeholder.m4a 或 {process_slug}/interviews/{session_id}/audio.wav
|
|
10
|
+
required: true
|
|
11
|
+
outputs:
|
|
12
|
+
- "{process_slug}/interviews/{session_id}/metadata.json"
|
|
13
|
+
- "{process_slug}/interviews/{session_id}/transcript.md"
|
|
14
|
+
- "{process_slug}/interviews/{session_id}/summary.md"
|
|
15
|
+
- "{process_slug}/interviews/{session_id}/raw-insights.md"
|
|
16
|
+
required_tools:
|
|
17
|
+
- Read
|
|
18
|
+
- Bash
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# process-interview
|
|
22
|
+
|
|
23
|
+
## Purpose
|
|
24
|
+
|
|
25
|
+
Using [process-interview] to 处理访谈录音,生成转写、摘要和初始洞察.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
处理访谈录音,生成带时间戳与说话人标签的 transcript、summary 和 raw-insights。
|
|
29
|
+
|
|
30
|
+
录音应优先由 `tools/lincoln-record` 生成,输出到 `{process_slug}/interviews/{session_id}/audio.wav`,然后调用本 skill 进行转写与后处理。
|
|
31
|
+
|
|
32
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# process-interview
|
|
2
|
+
|
|
3
|
+
You are executing the Lincoln workflow step `ingest`: process a stakeholder interview recording.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Extract structured information from the audio file and write artifacts to `{process_slug}/interviews/<session-id>/`.
|
|
8
|
+
|
|
9
|
+
## Input
|
|
10
|
+
|
|
11
|
+
- `recording_path`: path to the audio file (e.g., `{process_slug}/recordings/2026-06-27-stakeholder.m4a`)
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. Validate the file exists and is one of the supported formats: `.mp3`, `.m4a`, `.wav`, `.mp4`, `.mov`.
|
|
16
|
+
2. Derive `session_id` from the filename without extension (e.g., `2026-06-27-stakeholder`).
|
|
17
|
+
3. Create directory `{process_slug}/interviews/<session-id>/`.
|
|
18
|
+
4. Extract audio track if input is video using `ffmpeg`.
|
|
19
|
+
5. Transcribe using Whisper (prefer local `faster-whisper`; fallback to OpenAI Whisper API if local fails).
|
|
20
|
+
6. Generate `transcript.md` with timestamped Speaker A/B segments.
|
|
21
|
+
7. Generate `summary.md` with:
|
|
22
|
+
- `关键主题`
|
|
23
|
+
- `决策`
|
|
24
|
+
- `行动项`
|
|
25
|
+
- `开放问题`
|
|
26
|
+
8. Generate `raw-insights.md` with Agent's preliminary observations about potential requirements.
|
|
27
|
+
9. Write `metadata.json` with:
|
|
28
|
+
- sessionId
|
|
29
|
+
- originalFile
|
|
30
|
+
- duration
|
|
31
|
+
- processedAt
|
|
32
|
+
- transcriptModel
|
|
33
|
+
- status
|
|
34
|
+
|
|
35
|
+
## Output Artifacts
|
|
36
|
+
|
|
37
|
+
- `{process_slug}/interviews/<session-id>/metadata.json`
|
|
38
|
+
- `{process_slug}/interviews/<session-id>/transcript.md`
|
|
39
|
+
- `{process_slug}/interviews/<session-id>/summary.md`
|
|
40
|
+
- `{process_slug}/interviews/<session-id>/raw-insights.md`
|
|
41
|
+
|
|
42
|
+
## Rules
|
|
43
|
+
|
|
44
|
+
- Do not modify the original recording file.
|
|
45
|
+
- If transcription fails, write a partial artifact and report the error clearly.
|
|
46
|
+
- Use Chinese for the summary and insights unless the interview is in English.
|
|
47
|
+
- After completion, tell the user the next command: `claude clarify-requirements <session-id>`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: propose-with-openspec
|
|
3
|
+
description: 基于已确认 TDD 研发计划调用 OpenSpec CLI 生成变更提案 artifact
|
|
4
|
+
triggers:
|
|
5
|
+
- "生成 OpenSpec 提案"
|
|
6
|
+
- "propose-with-openspec"
|
|
7
|
+
inputs:
|
|
8
|
+
- name: session_id
|
|
9
|
+
description: 访谈会话 ID
|
|
10
|
+
required: true
|
|
11
|
+
- name: design_id
|
|
12
|
+
description: 产品设计 ID
|
|
13
|
+
required: true
|
|
14
|
+
- name: change_name
|
|
15
|
+
description: OpenSpec 变更名称,如 add-csv-export
|
|
16
|
+
required: true
|
|
17
|
+
outputs:
|
|
18
|
+
- "{process_slug}/openspec/changes/{change_name}/proposal.md"
|
|
19
|
+
- "{process_slug}/openspec/changes/{change_name}/design.md"
|
|
20
|
+
- "{process_slug}/openspec/changes/{change_name}/tasks.md"
|
|
21
|
+
- "{process_slug}/openspec/changes/{change_name}/specs/"
|
|
22
|
+
required_tools:
|
|
23
|
+
- Read
|
|
24
|
+
- Bash
|
|
25
|
+
- Write
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# propose-with-openspec
|
|
29
|
+
|
|
30
|
+
## Purpose
|
|
31
|
+
|
|
32
|
+
Using [propose-with-openspec] to 基于已确认 TDD 研发计划调用 OpenSpec CLI 生成变更提案 artifact.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
调用 OpenSpec CLI 基于 TDD 研发计划生成完整变更提案 artifact。
|
|
36
|
+
|
|
37
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# propose-with-openspec
|
|
2
|
+
|
|
3
|
+
You are executing the Lincoln workflow step `propose`: generate an OpenSpec change proposal directly using the OpenSpec CLI.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Invoke `openspec propose` using the confirmed TDD development plan to create the standard OpenSpec artifact directory under `{process_slug}/openspec/changes/<change-name>/`.
|
|
8
|
+
|
|
9
|
+
## Input
|
|
10
|
+
|
|
11
|
+
- `session_id`: the interview session identifier
|
|
12
|
+
- `design_id`: the product design identifier
|
|
13
|
+
- `change_name`: a short kebab-case change name (e.g., `add-csv-export`)
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
1. Read `{process_slug}/pages/docs/requirements.html` (extract Markdown from the `docSource` block).
|
|
18
|
+
2. Read `{process_slug}/pages/docs/tdd-plan.html`, `design-review.html`, `feature-catalog.html`, `data-model.html`, `flows.html`, `feasibility.html`, `fields.html`, and `ui-spec.html` (extract embedded Markdown where needed).
|
|
19
|
+
3. Verify `{process_slug}/pages/docs/tdd-plan.html` contains `<!-- status: ready-for-openspec -->`.
|
|
20
|
+
4. Ensure `{process_slug}/openspec/changes/<change_name>/` does not already exist, or ask the user if they want to overwrite.
|
|
21
|
+
5. Call the OpenSpec CLI. Try the following forms in order:
|
|
22
|
+
- `openspec propose <change_name> --from {process_slug}/pages/docs/tdd-plan.html`
|
|
23
|
+
- `openspec propose <change_name>` and pipe the TDD plan plus design summary into stdin
|
|
24
|
+
- If neither works, read the OpenSpec CLI help (`openspec propose --help`) and adapt.
|
|
25
|
+
6. Verify the generated artifacts:
|
|
26
|
+
- `{process_slug}/openspec/changes/<change_name>/proposal.md`
|
|
27
|
+
- `{process_slug}/openspec/changes/<change_name>/specs/` (at least one file)
|
|
28
|
+
- `{process_slug}/openspec/changes/<change_name>/design.md`
|
|
29
|
+
- `{process_slug}/openspec/changes/<change_name>/tasks.md`
|
|
30
|
+
7. Ensure the OpenSpec artifact references:
|
|
31
|
+
- `{process_slug}/pages/docs/tdd-plan.html`
|
|
32
|
+
- `{process_slug}/designs/<design_id>/prototype.pen`
|
|
33
|
+
- Core design docs under `{process_slug}/pages/docs/`
|
|
34
|
+
8. Call `superpowers:verification-before-completion` to verify the artifacts before claiming completion:
|
|
35
|
+
- Run `python scripts/validate_stage.py --phase exit --check openspec_artifact_complete --args <change_name>,<design_id>`
|
|
36
|
+
- Run `python scripts/validate_stage.py --phase exit --check tasks_extracted --args <change_name>`
|
|
37
|
+
- Read the output and confirm PASS. Do not claim completion without fresh verification evidence.
|
|
38
|
+
9. If any artifact is missing, empty, or missing design references, report the error and pause for human intervention.
|
|
39
|
+
10. Run `python scripts/stage_loader.py --stage propose --action record-artifacts`.
|
|
40
|
+
|
|
41
|
+
## Output Artifacts
|
|
42
|
+
|
|
43
|
+
- `{process_slug}/openspec/changes/<change_name>/proposal.md`
|
|
44
|
+
- `{process_slug}/openspec/changes/<change_name>/specs/*.md`
|
|
45
|
+
- `{process_slug}/openspec/changes/<change_name>/design.md`
|
|
46
|
+
- `{process_slug}/openspec/changes/<change_name>/tasks.md`
|
|
47
|
+
|
|
48
|
+
## Rules
|
|
49
|
+
|
|
50
|
+
- Do not bypass the OpenSpec CLI by manually writing the artifact files.
|
|
51
|
+
- Preserve the OpenSpec structure exactly as the CLI generates it.
|
|
52
|
+
- OpenSpec tasks must be driven by `{process_slug}/pages/docs/tdd-plan.html`.
|
|
53
|
+
- After success, tell the user to run: `claude split-to-github <session_id> <change_name>`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: split-to-github
|
|
3
|
+
description: 将 OpenSpec tasks 拆分为 GitHub Issues
|
|
4
|
+
triggers:
|
|
5
|
+
- "拆分到 GitHub"
|
|
6
|
+
- "split-to-github"
|
|
7
|
+
inputs:
|
|
8
|
+
- name: session_id
|
|
9
|
+
description: 访谈会话 ID
|
|
10
|
+
required: true
|
|
11
|
+
- name: change_name
|
|
12
|
+
description: OpenSpec 变更名称
|
|
13
|
+
required: true
|
|
14
|
+
outputs:
|
|
15
|
+
- .github/linked-issues.yaml
|
|
16
|
+
required_tools:
|
|
17
|
+
- Read
|
|
18
|
+
- Bash
|
|
19
|
+
- Write
|
|
20
|
+
- mcp__plugin_ecc_github__create_issue
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# split-to-github
|
|
24
|
+
|
|
25
|
+
## Purpose
|
|
26
|
+
|
|
27
|
+
Using [split-to-github] to 将 OpenSpec tasks 拆分为 GitHub Issues.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
读取 OpenSpec tasks 并拆分为带清晰边界和验收标准的 GitHub Issues。
|
|
31
|
+
|
|
32
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# split-to-github
|
|
2
|
+
|
|
3
|
+
You are executing the Lincoln workflow step `split`: convert OpenSpec tasks into GitHub Issues in the configured target repository.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Create one GitHub Issue per actionable task from `{process_slug}/openspec/changes/<change_name>/tasks.md`.
|
|
8
|
+
|
|
9
|
+
## Input
|
|
10
|
+
|
|
11
|
+
- `session_id`: the interview session identifier
|
|
12
|
+
- `change_name`: the OpenSpec change name
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. Read `.github/openspec-config.yml` to get the target repository `owner/name`.
|
|
17
|
+
2. Read `{process_slug}/openspec/changes/<change_name>/tasks.md`.
|
|
18
|
+
3. Parse the task list. For each task:
|
|
19
|
+
- Create a GitHub Issue in the target repo using `gh issue create` or the GitHub MCP.
|
|
20
|
+
- Title: clear, action-oriented
|
|
21
|
+
- Body must include:
|
|
22
|
+
- User story
|
|
23
|
+
- Acceptance criteria
|
|
24
|
+
- Source interview: `{process_slug}/interviews/<session_id>/`
|
|
25
|
+
- Source requirement: `{process_slug}/requirements/<session_id>/requirements.md`
|
|
26
|
+
- Source OpenSpec change: `{process_slug}/openspec/changes/<change_name>/`
|
|
27
|
+
- Relevant transcript timestamps
|
|
28
|
+
- Apply labels: `from-interview`, `openspec`
|
|
29
|
+
4. Write `.github/linked-issues.yaml` mapping tasks to issue numbers.
|
|
30
|
+
5. Update `{process_slug}/requirements/<session_id>/requirements.md` to record the created issue numbers.
|
|
31
|
+
|
|
32
|
+
## Output Artifacts
|
|
33
|
+
|
|
34
|
+
- `.github/linked-issues.yaml`
|
|
35
|
+
- Updated `{process_slug}/requirements/<session_id>/requirements.md`
|
|
36
|
+
- GitHub Issues in the target repository
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
- Do not create issues without a clear acceptance criterion.
|
|
41
|
+
- Each issue should map to exactly one OpenSpec task.
|
|
42
|
+
- After completion, tell the user the issues are ready for implementation.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync-to-knowledge
|
|
3
|
+
description: PR 合并后将代码和 issue 沉淀到 Obsidian 知识库
|
|
4
|
+
triggers:
|
|
5
|
+
- "同步到知识库"
|
|
6
|
+
- "sync-to-knowledge"
|
|
7
|
+
inputs:
|
|
8
|
+
- name: issue_number
|
|
9
|
+
description: GitHub Issue 编号
|
|
10
|
+
required: true
|
|
11
|
+
- name: pr_number
|
|
12
|
+
description: GitHub PR 编号
|
|
13
|
+
required: true
|
|
14
|
+
outputs:
|
|
15
|
+
- .github/lincoln-sync-queue/pr-{pr_number}.yaml
|
|
16
|
+
- knowledge/01-interviews/{session_id}.md
|
|
17
|
+
- knowledge/02-requirements/{requirement_id}.md
|
|
18
|
+
- knowledge/03-features/{feature_slug}.md
|
|
19
|
+
- knowledge/04-decisions/{decision_id}.md
|
|
20
|
+
required_tools:
|
|
21
|
+
- Read
|
|
22
|
+
- Bash
|
|
23
|
+
- Write
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# sync-to-knowledge
|
|
27
|
+
|
|
28
|
+
## Purpose
|
|
29
|
+
|
|
30
|
+
Using [sync-to-knowledge] to PR 合并后将代码和 issue 沉淀到 Obsidian 知识库.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
PR 合并后读取代码 diff、issue、需求文档和 OpenSpec design,沉淀到 Obsidian 知识库。
|
|
34
|
+
|
|
35
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# sync-to-knowledge
|
|
2
|
+
|
|
3
|
+
You are executing the Lincoln workflow step `sync-knowledge`: after a PR is merged, review the code and issue, then update the project Obsidian vault with both business and technical knowledge.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Ensure every merged issue leaves behind a complete, linked feature note in `knowledge/`.
|
|
8
|
+
|
|
9
|
+
## Input
|
|
10
|
+
|
|
11
|
+
- `issue_number`: the GitHub Issue number
|
|
12
|
+
- `pr_number`: the merged Pull Request number
|
|
13
|
+
|
|
14
|
+
## 子技能准备
|
|
15
|
+
|
|
16
|
+
在执行本 prompt 时:
|
|
17
|
+
1. 调用 `gsd-docs-update` 生成或更新知识文档,确保文档内容与代码库一致。
|
|
18
|
+
2. 若同步失败,调用 `gsd-forensics` 进行失败复盘,找到根因后再继续。
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
1. Read `.github/openspec-config.yml` for the target repository.
|
|
23
|
+
2. Fetch the issue and PR details using `gh` or GitHub MCP.
|
|
24
|
+
3. Find the linked requirement and OpenSpec change from the issue body.
|
|
25
|
+
4. Read the related files:
|
|
26
|
+
- `{process_slug}/requirements/<session>/requirements.md`
|
|
27
|
+
- `{process_slug}/openspec/changes/<change>/design.md`
|
|
28
|
+
- `{process_slug}/openspec/changes/<change>/tasks.md`
|
|
29
|
+
5. Review the merged PR diff.
|
|
30
|
+
6. Create or update `knowledge/03-features/<feature-slug>.md` using the feature-note template.
|
|
31
|
+
7. Ensure the feature note has both:
|
|
32
|
+
- `业务知识` section: background, user needs, acceptance criteria, value
|
|
33
|
+
- `技术知识` section: implementation overview, code locations, design decisions, dependencies, API/data models
|
|
34
|
+
8. Create/update supporting notes:
|
|
35
|
+
- `knowledge/01-interviews/<session>.md` if not exists
|
|
36
|
+
- `knowledge/02-requirements/<requirement-id>.md`
|
|
37
|
+
- `knowledge/04-decisions/<decision-id>.md` for any architecture decisions
|
|
38
|
+
9. Use Obsidian wikilinks (`[[...]]`) to connect notes.
|
|
39
|
+
10. Check for conflicts with existing knowledge. If a conflict is found, pause and ask the human PM.
|
|
40
|
+
|
|
41
|
+
## Output Artifacts
|
|
42
|
+
|
|
43
|
+
- `knowledge/03-features/<feature-slug>.md`
|
|
44
|
+
- `knowledge/02-requirements/<requirement-id>.md`
|
|
45
|
+
- `knowledge/01-interviews/<session>.md`
|
|
46
|
+
- `knowledge/04-decisions/<decision-id>.md` (if applicable)
|
|
47
|
+
- Updated `knowledge/00-index.md`
|
|
48
|
+
|
|
49
|
+
## Rules
|
|
50
|
+
|
|
51
|
+
- A feature note without both business and technical sections is invalid.
|
|
52
|
+
- Every note must link back to its source interview, requirement, issue, and PR.
|
|
53
|
+
- Do not overwrite human edits without noting the changes.
|
|
54
|
+
- After completion, summarize what was updated in the vault.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-continue
|
|
3
|
+
description: 人类修改文件后继续被暂停的工作流
|
|
4
|
+
triggers:
|
|
5
|
+
- "继续工作流"
|
|
6
|
+
- "workflow-continue"
|
|
7
|
+
inputs: []
|
|
8
|
+
outputs:
|
|
9
|
+
- 推进当前 stage 到下一个节点
|
|
10
|
+
required_tools:
|
|
11
|
+
- Read
|
|
12
|
+
- Bash
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# workflow-continue
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
Using [workflow-continue] to 人类修改文件后继续被暂停的工作流.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
在人类修改文件或回复后继续被暂停的 Lincoln 工作流。
|
|
23
|
+
|
|
24
|
+
运行入口: prompts/main.md
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# workflow-continue
|
|
2
|
+
|
|
3
|
+
You are resuming a paused Lincoln workflow after human intervention.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Re-read the current workflow state, detect what changed, and continue from the appropriate step.
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Confirm the current stage from the hook-loaded state (read `<process_slug>/workflow-stage.yaml` only if needed).
|
|
12
|
+
2. Identify the current step and its status (paused, waiting_for_human, validation_failed).
|
|
13
|
+
3. Re-read all artifacts associated with the current step.
|
|
14
|
+
4. If the human edited files directly, compare the current version with the version recorded in the state file and summarize the diff.
|
|
15
|
+
5. Re-run the entry/exit validators for the current step.
|
|
16
|
+
6. If validation passes, continue to the next step.
|
|
17
|
+
7. If validation fails, report the failures and pause again.
|
|
18
|
+
8. If resuming after a merged PR, read `.github/lincoln-sync-queue/pr-<pr_number>.yaml` to get the pending `issue_number` and `pr_number`.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- Always acknowledge what the human changed before continuing.
|
|
23
|
+
- Do not skip steps.
|
|
24
|
+
- If the human wants to abort or restart a step, respect that instruction.
|
|
25
|
+
- Keep responses concise: state what was detected, what was validated, and what happens next.
|