Agent skill
setup-project
Explore a target project and generate tailored recipes and config through an interactive workflow. Use when user wants to onboard a new project to AutoSkillit, says "setup project", or wants a starting point config.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/setup-project-talont-org-autoskillit
SKILL.md
Setup Project Skill
Explore a target project and generate tailored recipes and AutoSkillit config through an interactive, workflow-first UX.
When to Use
- User wants to onboard a new project to AutoSkillit
- User passes a project path and wants ready-to-use recipes
- User has no
.autoskillit/config.yamland wants a starting point
Arguments
/autoskillit:setup-project {project_dir}
project_dir— Absolute path to the target project to onboard
Critical Constraints
NEVER:
- Modify any files in the target project without user confirmation at the summary gate
- Run commands that change the target project
- Create files outside
temp/setup-project/directory (until the summary gate) - Assume test framework — detect it from evidence
- Use Makefile or
makein generated examples — use Taskfile/taskif a task runner is needed - Suggest
reset_guard_markerconfig — that's a workspace concern, not project setup - Include install instructions or "Getting Started" sections — user is already running the skill
- Hardcode
base_branch = main— detect the current branch
ALWAYS:
- Read the target project using Glob, Read, and Grep — no shell commands against target
- Use
model: "sonnet"when spawning all subagents via the Task tool - Detect language, test framework, build system, and CI from actual files
- Present candidate workflows one by one for user approval before generating scripts
- Show a summary confirmation gate before writing anything to disk
- Use the two-directory model (project_dir + work_dir) in generated recipes
Workflow
Step 0: Parse Arguments and Prompt
Extract project_dir from the prompt. Invocation: /autoskillit:setup-project {project_dir}. If missing, abort: "Usage: /autoskillit:setup-project /absolute/path/to/project". Resolve to absolute path. Verify the directory exists.
Validate project_dir before exploring: Confirm {project_dir} exists and is a git
repository before launching subagents:
ls "{project_dir}"
git -C "{project_dir}" rev-parse --is-inside-work-tree
If the directory does not exist or is not a git repo, stop immediately and report the error to
the user. Do not assume any internal paths (src/, tests/, etc.) exist until the directory
structure has been verified in Step 1.
Then prompt the user:
"Would you like me to also scan your Claude Code conversation history for this project to identify recurring patterns that could become recipes?"
Store the answer for Step 1.
Step 1: Explore Target Project (Parallel Subagents)
Launch parallel Explore subagents against project_dir. If the user opted into history mining, include Subagent E in the same parallel launch:
Subagent A — Language & Build System:
- Read
pyproject.toml,setup.py,package.json,go.mod,Cargo.toml,build.gradle,pom.xml - Check for
Taskfile.yml,justfile - Detect primary language(s) and package manager
- Detect worktree setup command: if
Taskfile.ymlhasinstall-worktreetask use["task", "install-worktree"]; for Python+uv use["uv", "venv", ".venv", "&&", "uv", "pip", "install", "-e", ".[dev]", "--python", ".venv/bin/python"]; for Python+pip use["python", "-m", "venv", ".venv", "&&", ".venv/bin/pip", "install", "-e", ".[dev]"]; for Node npm use["npm", "install"]; for Node pnpm use["pnpm", "install"]; for Rust use["cargo", "fetch"]; for Go use["go", "mod", "download"]
Subagent B — Test Framework:
- Python:
pytest.ini,pyproject.toml [tool.pytest],conftest.py,tests/ - JS/TS:
jest.config.*,vitest.config.*,.mocharc.* - Go:
*_test.gofiles - Rust:
#[test]in source files - Determine the exact test command
Subagent C — Project Structure & Critical Paths:
- Glob source directories (
src/,lib/,pkg/,app/,internal/) - Identify schema definitions, migrations, core config, API routes
- These become candidates for
classify_fix.path_prefixes - Detect monorepo workspaces:
pnpm-workspace.yaml,Cargo.toml [workspace],go.work, Nxproject.json, Lernalerna.json - Read README.md (first 100 lines) for project description
Subagent D — Existing AutoSkillit Config:
- Check for
.autoskillit/config.yaml— read if present - Check for
.autoskillit/recipes/— list any recipes - Check for
CLAUDE.md— extract project constraints - Check for
.autoskillit/workflows/— list any custom workflows
Subagent E — Current Git Branch:
- Run
git -C {project_dir} branch --show-current - This becomes the default
base_branchin generated scripts
Subagent F+ — Conversation History Mining (only if user opted in):
Claude Code stores conversation history at ~/.claude/projects/<encoded-path>/ as JSONL files (one per session). The path encoding replaces / and _ with - (e.g., /home/user/my_project -> -home-user-my-project).
- Compute the encoded directory name from
project_dir - List all
.jsonlfiles in~/.claude/projects/<encoded-name>/, including subagent files in<session-uuid>/subagents/agent-*.jsonl - Sort by modification time (newest first)
- Divide into batches of ~20-30 files per subagent — launch multiple parallel subagents if needed
Each history-mining subagent:
- Reads JSONL files line by line and extracts:
- Skill invocations:
type: "user"messages wherecontentcontains<command-name>/skill-name</command-name>. Extract skill name and args. - Tool call sequences:
type: "assistant"messages ->message.content[]items withtype: "tool_use". Extractnameandinput. Build ordered tool-call sequences per session. - Repeated multi-step patterns: Same tool sequence appearing across multiple sessions (e.g., always
Bash(git checkout) -> Edit -> Edit -> Bash(pytest) -> Bash(git commit)). - Common skill chains: Skill invocations that follow a consistent order (e.g.,
/autoskillit:investigate->/autoskillit:rectify->/autoskillit:implement-worktree). - Repeated
run_cmdcommands: Exact shell commands run frequently via Bash tool.
- Skill invocations:
- Returns structured findings: frequency-ranked tool sequences (min 3 occurrences), skill chains, and notable single-tool patterns
Step 2: Synthesize Project Profile
Consolidate subagent findings into a structured profile:
- Language + package manager
- Test command (exact list form, e.g.
["pytest", "-v"]) - Build/lint tools
- Critical paths (for classify_fix)
- Whether a reset mechanism exists (Taskfile
cleantarget, npm script, etc.) - Worktree setup command (command to run after
git worktree add) - Existing config state (none / partial / complete)
- Current git branch (for
base_branchdefault) - Discovered workflow patterns from conversation history (if opted in) — recurring tool sequences and skill chains, ranked by frequency, with candidate recipe drafts
Step 3: Write Analysis to temp/ (relative to the current working directory)
Before presenting anything interactively, write the full analysis (project profile, workflow patterns, candidate workflows, shell command patterns) to:
temp/setup-project/analysis_{project_name}_{YYYY-MM-DD_HHMMSS}.md
Tell the user: "Full analysis saved to {path} for your review."
Step 4: Present Candidate Workflows
Interactive flow. For each candidate workflow discovered:
CRITICAL: Do NOT output any prose status text between workflow iterations. After completing one workflow's presentation and user response, immediately begin presenting the next workflow.
-
Always offer the standard implementation pipeline first (plan → dry-walkthrough → implement → test → merge), even if not discovered in history. This is the core AutoSkillit workflow.
-
For each candidate workflow (including the standard one): Do NOT output any prose status text between workflows — immediately begin the next workflow's presentation after the user responds.
- Present the workflow chain and explain what it automates
- Ask the user: "Would you like me to generate a recipe for this workflow?"
- Before generating, resolve skill references in the workflow:
- For each skill in the detected chain (no prose between skills), check if it exists both locally
(
.claude/skills/<name>/SKILL.md) and as a bundled autoskillit skill - If any skill exists in both, present the conflicts to the user as a batch:
"These skills exist in both your project and AutoSkillit's bundled set:
<name>→ local (bare/<name>) or bundled (/autoskillit:<name>)? Local versions are recommended. Should I use local for all, or do you want to pick individually?" List each conflicting skill name on its own line in the prompt.
- Record the user's preferences and pass them as context to write-recipe
- For each skill in the detected chain (no prose between skills), check if it exists both locally
(
- If yes: LOAD
/autoskillit:write-recipeusing the Skill tool to generate the script. The agent already has full context from the exploration phases (workflow name, detected variables like project_dir/work_dir/base_branch, tool call sequence, routing logic) — no explicit parameter passing is needed. write-recipe uses that context directly to produce a clean script. - Explain what a recipe is (discovered via
list_recipesMCP tool, loaded viaload_recipe, the agent interprets the YAML and executes the steps), show the generated script content - Track the user's approval — do NOT write to disk yet
- Move to the next candidate workflow
Fill in detected values: test command, base branch, project-specific notes, any detected quirks. Use the two-directory model (project_dir + work_dir) in generated scripts. If work_dir equals project_dir, note that add_dir is not needed.
Step 5: Config Updates
Interactive config suggestion flow:
- Show the current config vs. suggested config diff
- For each suggested change, ask the user if they want to apply it
- Track approvals — do NOT write to disk yet
- Do NOT suggest
reset_guard_marker— that's a workspace concern, not project setup - Ask the user for their preferred default base branch:
"What is your default base branch? (e.g., 'integration' for the 3-tier model, 'main' for the classic model)" Default:
integrationIf the user selects a value different from the package default (integration), add it to the config diff as:yamlbranching: default_base_branch: {user_choice}
If no config exists, present the suggested config in full. If config exists, only highlight missing or suboptimal settings.
Suggested config template:
test_check:
command: {detected test command as list}
# timeout: 600
# classify_fix:
# path_prefixes:
# - {detected critical paths}
# reset_workspace:
# command: {detected reset command}
# preserve_dirs: []
# worktree_setup:
# command: {detected worktree setup command}
Step 6: Summary Confirmation Gate
Following the Terraform plan→apply pattern, show a summary of everything approved before touching disk:
- For each approved recipe, save to
.autoskillit/recipes/{name}.yaml - List all approved recipes with their save paths
- List all approved config changes
- Ask one final question: "Write all of the above?"
- If confirmed:
- Create target directories as needed
- Write all approved recipes to their chosen paths
- Apply all approved config changes
- If declined: abort without writing anything
This prevents incremental approval fatigue and gives the user a single clear decision point.
Step 7: Output Summary
Write a concise summary to terminal:
- Which scripts were saved and where
- Which config changes were applied
- Any notes or warnings (e.g., test timeout may need adjustment, critical paths are inferred)
Do NOT include:
- Install instructions (user is already running the skill)
- "Getting Started" sections
- Repeated content from earlier steps
Output
Artifacts created:
temp/setup-project/analysis_{project_name}_{YYYY-MM-DD_HHMMSS}.md— full analysis (always).autoskillit/recipes/{name}.yaml— approved recipes.autoskillit/config.yaml— updated config (if changes approved)
After the summary confirmation gate completes (Step 7), emit the following structured output tokens as the very last lines of your text output:
analysis_path = {absolute_path_to_analysis_file}
config_path = {absolute_path_to_config_file}
Emit config_path only if .autoskillit/config.yaml was written in this session.
If no config changes were applied, omit the config_path= line.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?