planner-analyze
Detect language, framework, test infrastructure, project structure, and existing patterns in the target project. Produces analysis.json used by subsequent planner skills.
When to Use
- Invoked by the planner recipe as the first analysis step
- User says "analyze project structure" in a planning context
Arguments
- $1 — Absolute path to the run-scoped planner directory (e.g.,
{{AUTOSKILLIT_TEMP}}/planner/run-YYYYMMDD-HHMMSS). Created by the init step.
Critical Constraints
NEVER:
- Modify any target project files
- Write analysis.json outside
$1/
- Run subagents in the background (
run_in_background: true is prohibited)
ALWAYS:
- Use Explore subagents for all file reads
- Spawn all 4 subagents in parallel
- Write valid JSON to
analysis.json
Workflow
Step 1: Launch 4 parallel Explore subagents
Spawn all four concurrently with model: "sonnet":
Languages & Frameworks — Identify primary language, framework, build system. Look for: pyproject.toml, package.json, Cargo.toml, go.mod, pom.xml, build.gradle, import statements, dependency files.
Test Infrastructure — Identify test runner, coverage tools, test directory layout. Look for: pytest.ini, jest.config.*, go test, cargo test, test file naming patterns.
Architecture Patterns — Identify architecture style (layered, hexagonal, monolithic, microservices, etc.) and count modules. Look for: directory depth, import graphs, layer naming, package boundaries.
Existing Conventions — Identify naming conventions, code patterns, and risk areas. Look for: consistent naming in identifiers, repeated structural patterns, areas with high coupling or missing tests.
Step 2: Synthesize results
Merge all four agent outputs into a single analysis.json document matching the output schema.
Step 3: Write output
Write to $1/analysis.json. The directory was created by the init step.
Output Schema
{
"language": "python",
"framework": "fastapi",
"build_system": "uv",
"test_runner": "pytest",
"architecture_style": "layered",
"module_count": 42,
"key_patterns": ["dependency injection", "protocol-based contracts"],
"conventions": ["snake_case identifiers", "private prefix _"],
"risks": ["high coupling in server layer", "no tests for migration engine"]
}
All fields are required. Use null for fields that cannot be determined. Arrays may be empty but must be present.
1---2name: planner-analyze3description: Analyze project structure for planning decomposition4---56# planner-analyze78Detect language, framework, test infrastructure, project structure, and existing patterns in the target project. Produces `analysis.json` used by subsequent planner skills.910## When to Use1112- Invoked by the planner recipe as the first analysis step13- User says "analyze project structure" in a planning context1415## Arguments1617- **$1** — Absolute path to the run-scoped planner directory (e.g., `{{AUTOSKILLIT_TEMP}}/planner/run-YYYYMMDD-HHMMSS`). Created by the `init` step.1819## Critical Constraints2021**NEVER:**22- Modify any target project files23- Write analysis.json outside `$1/`24- Run subagents in the background (`run_in_background: true` is prohibited)2526**ALWAYS:**27- Use Explore subagents for all file reads28- Spawn all 4 subagents in parallel29- Write valid JSON to `analysis.json`3031## Workflow3233### Step 1: Launch 4 parallel Explore subagents3435Spawn all four concurrently with `model: "sonnet"`:36371. **Languages & Frameworks** — Identify primary language, framework, build system. Look for: `pyproject.toml`, `package.json`, `Cargo.toml`, `go.mod`, `pom.xml`, `build.gradle`, import statements, dependency files.38392. **Test Infrastructure** — Identify test runner, coverage tools, test directory layout. Look for: `pytest.ini`, `jest.config.*`, `go test`, `cargo test`, test file naming patterns.40413. **Architecture Patterns** — Identify architecture style (layered, hexagonal, monolithic, microservices, etc.) and count modules. Look for: directory depth, import graphs, layer naming, package boundaries.42434. **Existing Conventions** — Identify naming conventions, code patterns, and risk areas. Look for: consistent naming in identifiers, repeated structural patterns, areas with high coupling or missing tests.4445### Step 2: Synthesize results4647Merge all four agent outputs into a single `analysis.json` document matching the output schema.4849### Step 3: Write output5051Write to `$1/analysis.json`. The directory was created by the `init` step.5253## Output Schema5455```json56{57 "language": "python",58 "framework": "fastapi",59 "build_system": "uv",60 "test_runner": "pytest",61 "architecture_style": "layered",62 "module_count": 42,63 "key_patterns": ["dependency injection", "protocol-based contracts"],64 "conventions": ["snake_case identifiers", "private prefix _"],65 "risks": ["high coupling in server layer", "no tests for migration engine"]66}67```6869All fields are required. Use `null` for fields that cannot be determined. Arrays may be empty but must be present.