Install
openclaw skills install @thcjp/solo-dev-companionExecute implementation tasks from a plan using TDD workflow with automatic commits, progress tracking, error recovery, and multi-format support for solo and...
openclaw skills install @thcjp/solo-dev-companion功能说明: 本技能涵盖 专业的能力支持、提交与阶段门禁 等核心能力。
功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。
This skill is self-contained — follow the task loop, TDD rules, and completion flow below instead of delegating to external build/execution skills (superpowers, etc.).
Execute tasks from an implementation plan. Finds plan.md (in docs/plan/), picks the next unchecked task, implements it with TDD workflow, commits, and updates progress.
After /plan has created a track with spec.md + plan.md. This is the execution engine.
Pipeline: /plan → /build → /deploy → /review
session_search(query) — find how similar problems were solved beforeproject_code_search(query, project) — find reusable code across projectscodegraph_query(query) — check file dependencies, imports, callersIf 协议 tools are not available, fall back to Glob + Grep + Read.
详细内容已移至
references/detail.md
$ARGUMENTS contains a track ID:{plan_root}/{argument}/plan.md exists (check docs/plan/).docs/plan/*/plan.md for partial matches, suggest corrections.$ARGUMENTS contains --task X.Y:plan.md files in docs/plan/.plan.md, find tracks with uncompleted tasks./plan first."codegraph_explain(project="{project name}")
Returns: stack, languages, directory layers, key patterns, top dependencies, hub files — one call instead of exploring the tree manually.
docs/plan/{trackId}/plan.md — task list (REQUIRED)docs/plan/{trackId}/spec.md — acceptance criteria (REQUIRED)docs/workflow.md — TDD policy, commit strategy (if exists).md — architecture, Do/Don't.solo/pipelines/progress.md — running docs from previous iterations (if exists, pipeline-specific). Contains what was done in prior pipeline sessions: stages completed, commit SHAs, last output lines. Use this to avoid repeating completed work.Do NOT read source code files at this stage. Only docs. Source files are loaded per-task in the execution loop (step 3 below).
If a task is marked [~] in plan.md:
Resuming: {track title}
Last task: Task {X.Y}: {description} [in progress]
1. Continue from where we left off
2. Restart current task
3. Show progress summary first
Ask via AskUserQuestion, then proceed.
Makefile convention: If Makefile exists in project root, always prefer make targets over raw commands. Use make test instead of pnpm test, make lint instead of pnpm lint, make build instead of pnpm build, etc. Run make help (or read Makefile) to discover available targets. If a make integration or similar target exists, use it for integration testing after pipeline-related tasks.
IMPORTANT — All-done check: Before entering the loop, scan plan.md for ANY - [ ] or - [~] tasks. If ALL tasks are [x] — skip the loop entirely and jump to Completion section below to run final verification and output <solo:done/>.
For each incomplete task in plan.md (marked [ ]), in order:
Parse plan.md for first line matching - [ ] Task X.Y: (or - [~] Task X.Y: if resuming).
[ ] → [~] for current task.Do NOT grep the entire project or read all source files. Load only what this specific task needs.
If 协议 available (preferred):
project_code_search(query="{task keywords}", project="{name}") — find relevant code in the project. Read only the top 2-3 results.session_search("{task keywords}") — check if you solved this before.codegraph_query("MATCH (f:File {project: '{name}'})-[:IMPORTS]->(dep) WHERE f.path CONTAINS '{module}' RETURN dep.path") — check imports/dependencies of files you'll modify.If 协议 unavailable (fallback):
src/auth/**/*.ts), not the entire project.src/ or app/ — never **/*.Never do: Grep "keyword" . across the whole project. This dumps hundreds of lines into context for no reason. Be surgical.
When the project uses a mobile stack:
iOS (Swift):
swiftlint lint --strict
swift-format format --in-place --recursive Sources/
Android (Kotlin):
./gradlew detekt
./gradlew ktlintCheck
Both use lefthook for pre-commit hooks (language-agnostic, no Node.js required).
Red — write failing test:
Green — implement:
Refactor:
If the task touches core business logic (pipeline, algorithms, agent tools), run make integration (or the integration command from docs/workflow.md). The CLI exercises the same code paths as the UI without requiring a browser. If make integration fails, fix before committing.
Tests failing after Task X.Y:
{failure details}
1. Attempt to fix
2. Rollback task changes (git checkout)
3. Pause for manual intervention
Ask via AskUserQuestion. Do NOT automatically continue past failures.
When all phases and tasks are [x]:
pnpm builduv build or uv run python -m py_compile src/**/*.pypnpm buildpnpm buildxcodebuild -scheme {Name} -sdk iphonesimulator build./gradlew assembleDebugChange **Status:** [ ] Not Started → **Status:** [x] Complete at the top of plan.md.
Output pipeline signal ONLY if pipeline state directory (.solo/states/) exists:
<solo:done/>
Do NOT repeat the signal tag elsewhere in the response. One occurrence only.
详细代码示例已移至
references/detail.md
At the start of a build session, create a task list from plan.md so progress is visible:
[ ] and [~]).in_progress when starting a task, completed when done.These thoughts mean STOP — you're about to cut corners:
| Thought | Reality |
|---|---|
| "This is too simple to test" | Simple code breaks too. Write the test. |
| "I'll add tests later" | Tests written after pass immediately — they prove nothing. |
| "I already tested it manually" | Manual tests don't persist. Automated tests do. |
| "The test framework isn't set up" | Set it up. That's part of the task. |
| "This is just a config change" | Config changes break builds. Verify. |
| "I'm confident this works" | Confidence without evidence is guessing. Run the command. |
| "Let me just try changing X" | Stop. Investigate root cause first. |
| "Tests are passing, ship it" | Tests passing ≠ acceptance criteria met. Check spec.md. |
| "I'll fix the lint later" | Fix it now. Tech debt compounds. |
| "It works on my machine" | Run the build. Verify in the actual environment. |
head -50 or use --reporter=dot / -q flag. Thousands of test lines pollute context. Only show failures in detail.Cause: No plan.md exists in docs/plan/.
Fix: Run /plan "your feature" first to create a track.
Cause: Implementation broke existing functionality. Fix: Use the error handling flow — attempt fix, rollback if needed, pause for user input. Never skip failing tests.
Cause: Tests or linter failed at phase boundary. Fix: Fix failures before proceeding. Re-run verification for that phase.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
codegraph_explain(project="{project name}")
详细的输入输出格式请参考下方章节说明。
| 场景 | 输入 | 输出 |
|---|---|---|
| 基础使用 | 用户请求 | 处理结果 |
不适用于:需要人工判断的复杂决策场景
# 请参考上方使用说明进行配置和调用
result = "ready"
A: 请先阅读使用流程章节,确认环境满足依赖说明中的要求。
A: 请参考错误处理章节,按照表格中的处理方式操作。
A: 请参考已知限制章节了解具体限制。