From notion-claude-integration
Use when invoked via a Notion webhook channel event with Workflow="In Progress". Runs the full automated development cycle: navigate to project, branch, plan, implement with TDD, verify, commit, push, create PR, update Notion ticket to Review. Always invoke this skill when receiving a Notion channel event with page_id, project_folder, github_repo, title, and description context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/notion-claude-integration:implement-featureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fully automated development cycle triggered by a Notion ticket reaching "In Progress" status.
Fully automated development cycle triggered by a Notion ticket reaching "In Progress" status.
This skill runs without any human interaction. Every decision must be made autonomously. When blocked, post a Notion comment and stop — do not wait for input.
You will be given this context when the skill is invoked:
page_id — Notion page UUIDproject_folder — subfolder name under ${CLAUDE_PROJECTS_ROOT:-$HOME/projects}github_repo — owner/repo stringtitle — ticket titledescription — full task requirements and acceptance criteriaCheck that project_folder, github_repo, title, and description are all present and non-empty.
If any are missing or the description is too vague to act on safely:
"Claude: Cannot start — missing required fields: {list}. Please fill in and set Workflow back to In Progress."Workflow back to "In Progress" via notion-update-pageGenerate a branch slug from the title: lowercase, replace spaces and special characters with hyphens, strip leading/trailing hyphens, max 40 chars.
Example: "Add pagination to trade history" → add-pagination-to-trade-history
cd ${CLAUDE_PROJECTS_ROOT:-$HOME/projects}/{project_folder}
git checkout main
git pull
git checkout -b feat/{slug}
If the branch already exists, check it out and continue from where it left off rather than failing.
If git pull fails (merge conflict or dirty state): post a Notion comment explaining the exact error, set Workflow back to "In Progress", and stop.
Before planning or touching any code:
CLAUDE.md if it exists — it contains build commands, architecture notes, test instructions, and conventions specific to this projectThis is what makes the plan accurate. Skipping it leads to plans that conflict with existing conventions.
Use superpowers:writing-plans with the Notion ticket as the spec.
Autonomous adaptations (no user interaction available):
docs/superpowers/plans/YYYY-MM-DD-{title}.md in the project folderThe plan must include:
Use superpowers:subagent-driven-development to execute the plan.
Why subagents: Each implementation task runs in a fresh subagent with isolated context. This keeps the main Claude session clean so it can receive and route future Notion webhook events without context pollution.
Autonomous adaptations:
Each subagent task follows TDD strictly:
No production code without a failing test first. No exceptions in autonomous mode.
Use superpowers:verification-before-completion before making any completion claims.
Run the full test suite and confirm:
Do not proceed to commit/push/PR if verification fails. If tests fail after implementation:
git add -A
git commit -m "feat: {title}"
git push -u origin feat/{slug}
Use the GitHub MCP create_pull_request tool:
github_repofeat/{slug}main{title}Notion ticket: https://notion.so/{page_id}
## What was done
{brief summary of what was implemented}
## Tests
{passed / failed with details if failed}
Save the PR URL from the response.
Use notion-update-page with command="update_properties":
properties: {
"Workflow": "Review",
"GitHub PR": {PR URL}
}
Note: Use the Workflow Select property (not Status) — the built-in Notion Tasks Status does not accept custom values via API.
Then use notion-create-comment to post:
Claude: PR ready for review: {PR URL}
What was implemented: {1-2 sentence summary}
{If tests failed: "⚠️ Tests failing: {brief reason}. Please review before merging."}
When anything blocks progress:
"Claude: " — describe exactly what's blocking and what's needed to unblock it"In Progress" via notion-update-page so the ticket stays visiblecomment.created webhookTreat ambiguity as a blocker, not a license to guess.
npx claudepluginhub mlashcorp/claude-skills --plugin notion-claude-integrationProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.