Kickoff
Claude Code skill: definition-of-done gate, structured intake, and CLAUDE.md generation for new and existing projects
npx -y skills add babiskon/kickoff --skill kickoffAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when starting a new project from scratch, spinning up something new, scaffolding a codebase, onboarding an existing project for Claude context, or adding CLAUDE.md to a repo. Trigger phrases: "new project", "from scratch", "start fresh", "build something new", "set it up properly", "document this project", "add CLAUDE.md", "set up context".
SKILL.md
8.3 KB, as published. Nobody here has run it
Kickoff
Runs a structured project intake before any code is written: pins down the definition of done first, asks 7 high-impact questions, and generates a CLAUDE.md so Claude has full context from session one. Works for new and existing projects.
Deferring Answers (Open Decisions)
The user can defer any answer with "TBD", "skip", or "not sure yet". When this happens:
- Accept without pushing back further
- Record in CLAUDE.md as:
- [ ] **[Topic]**: [what needs deciding] — deferred at intake
At the start of every future session, surface unchecked Open Decisions.
Steps
0. Detect Mode: New or Existing Project
Infer from context — do not ask unless genuinely ambiguous.
If new: proceed to Step 1 with all questions blank.
If existing:
- Ask for the project folder path.
- Scan before asking anything: read existing CLAUDE.md, requirements/package files, config files, and entry-point scripts.
- Pre-fill as many intake answers as you can, then present them as a confirmation list rather than open questions.
- If a CLAUDE.md already exists, show what will change before writing — do not silently overwrite.
1. Ask the 7 Questions
Ask Q1 alone first — it is the critical gate. Once answered (or explicitly deferred), present Q2–Q7 as a single grouped block.
Q1. What does "done" look like for this project?
Be specific: what output exists, where does it go, and how will we know it works?
Q2. What is the project name? (this becomes the folder name)
Q3. What type of project is this?
a) Data analysis / EDA / report
b) Machine learning / predictive model
c) Web app / dashboard
d) Scheduled automation / monitoring job
e) MCP server / AI agent integration
f) API / backend service
g) Google Apps Script / Sheets integration
h) CLI tool / library
i) Other (describe)
Q4. What data sources are involved?
(databases, files, APIs, spreadsheets, etc.)
Q5. What is the expected output and where does it go?
(file, database table, dashboard, API, email, etc.)
Q6. What is explicitly OUT of scope?
Q7. Is there an existing project I should reference or reuse patterns from?
2. Clarification Loop
Always check the done answer first. A done criterion must pass this test: can we run a single check at the end of a session and say yes or no? Push back once if vague — if the user defers after one push, accept it and move on.
Always check these regardless of type:
- Data source is vague → ask for exact names (table paths, file names, API endpoints)
- Output destination is unclear → ask where it goes and in what format
- Out of scope is blank → ask for at least one explicit boundary
For Google Sheets projects: ask for the Sheet URL; extract and store the bare spreadsheet ID.
For GAS/Drive automation: confirm move vs copy, trigger mechanism (menu/button/auto), search scope (top-level vs recursive), and multiple-match behavior.
For BigQuery/database projects: confirm the exact project.dataset.table path and key columns.
For ML projects: ask for target variable, feature sources, training data range, and deployment target.
Do NOT proceed to folder creation until confident the CLAUDE.md will be accurate, or the user has explicitly chosen to proceed with open decisions.
3. Propose the Session 1 Goal
Before creating anything, propose a narrower milestone based on what you know:
"Based on what you've described, here's what I suggest we accomplish today: [one specific, verifiable output]. Does that sound right?"
This must be narrower than the full definition of done — the smallest useful thing shippable in one session. Do not write this goal to CLAUDE.md; it belongs to this session only.
4. Create Project Folder
For existing projects: confirm the path exists and skip creation.
For new projects: ask the user where to create the project, or default to the current working directory:
mkdir -p "<parent_dir>/<project_name>"
5. Set Up Environment (if applicable)
Skip for GAS-only projects. Ask: "Do you want me to set up an environment now?"
Python:
python3 -m venv venv
Create requirements.txt pre-populated by type:
| Type | Starter packages |
|---|---|
| Data analysis | pandas numpy scipy matplotlib seaborn python-dotenv |
| ML | pandas numpy scikit-learn python-dotenv |
| Web app / dashboard | streamlit pandas plotly python-dotenv |
| Automation | python-dotenv requests |
| MCP server | mcp python-dotenv |
| API / backend | fastapi uvicorn python-dotenv |
Also create a .env stub (# PROJECT_ENV_VAR=) and .gitignore (venv/, .env, __pycache__/).
Node.js projects: run npm init -y and create .gitignore (node_modules/, .env).
6. Write CLAUDE.md
Create <project_dir>/CLAUDE.md. Include only sections that apply — an N/A entry is worse than no entry.
Core template (all projects)
# <Project Name>
## Definition of Done
<answer from Q1>
## Out of Scope
<answer from Q6>
## Project Type
<answer from Q3>
## Purpose
<brief description inferred from answers>
## Data Sources
<answer from Q4 — be specific: exact table paths, file names, API endpoints>
## Expected Output
<answer from Q5>
## Tech Stack
<inferred from project type — list key libraries>
## CRITICAL Constraints
<from clarification loop — exhaustive and concrete; omit section if none>
## Reference Projects
<answer from Q7 — omit section if none>
## Open Decisions
<deferred items as: - [ ] **[Topic]**: [what needs deciding] — deferred at intake>
<write "None" if nothing was deferred>
## Notes
- Project directory: <full path>
Type-specific additions
GAS / Sheets / Drive automation:
## Script Behavior
<trigger → what it reads → what it does → what it writes back>
## Source Schema
<tab names; for each relevant tab: column names, data types, value formats>
## Existing Automation
<any AppScript or scheduled process already in place — one sentence each, or "None">
Data analysis / EDA / Dashboard:
## Analysis Scope
<specific metrics and questions the analysis must answer>
## Source Schema
<key columns and data types of the source data>
Machine learning:
## Model Spec
- Target variable: <name and type>
- Feature sources: <tables or files>
- Training data range: <date range>
- Deployment target: <batch job / API / output file>
MCP server / AI agent integration:
## Tools Exposed
<list of MCP tools this server will expose, one per line>
7. Initialize OpenWolf (optional)
Run only if openwolf is installed:
command -v openwolf > /dev/null 2>&1 && openwolf init || true
If openwolf is absent: skip this step silently. CLAUDE.md is the critical artifact — OpenWolf is an enhancement.
If openwolf initializes successfully and the project involves a Google Sheet, append to .wolf/cerebrum.md:
Working Google Sheet for this project: {sheet_url}
8. Create Obsidian Index Note (optional)
Run only if mcp__obsidian__write_note is available in your tool set. If unavailable, skip silently.
Ask: "What path in your Obsidian vault should I create the project index at?"
(suggest: Work/<project_name>/<project_name>_index.md)
Use mcp__obsidian__write_note to create:
# <project_name>
## Sessions
## Decisions
## Open Questions
9. Confirm and Summarize
Tell the user:
- Folder: confirmed path; whether it was created or already existed
- CLAUDE.md: written fresh or updated (and what changed)
- Environment: whether venv/npm was set up, or skipped
- OpenWolf: initialized / skipped (not installed)
- Obsidian: index created / skipped (MCP unavailable)
- Open Decisions: how many were deferred, and that they'll be surfaced at session start
- For new Python projects: suggest opening the folder in their IDE and pointing the interpreter at
venv/