/help
OrchestKit help directory with categorized skill listings. Use when discovering skills for a task, finding the right workflow, or browsing capabilities.
$ npx -y skills add yonatangross/orchestkit --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/help
Context preview
What this command does when you run it.
OrchestKit help directory with categorized skill listings. Use when discovering skills for a task, finding the right workflow, or browsing capabilities.
Command definition
help.mddescription: "OrchestKit help directory with categorized skill listings. Use when discovering skills for a task, finding the right workflow, or browsing capabilities."
argument-hint: "[category]"
model: haiku
effort: low
context: inherit
user-invocable: true
name: help
allowed-tools: [AskUserQuestion, Read, Grep, Glob]
Auto-generated from skills/help/SKILL.md
Source: https://github.com/yonatangross/orchestkit
OrchestKit Skill Directory
Dynamic skill discovery: enumerates the installed plugin at runtime so listings are never stale.
> **CC 2.1.121+ tip:** if you just want to find one skill quickly, the native `/skills` command now has type-to-filter — open it and start typing the skill name. Use `/ork:help` when you want categorized browsing or rationale for *why* a skill applies.
Quick Start
/ork:help # Show all categories
/ork:help build # Show BUILD skills only
/ork:help git # Show GIT skills only
/ork:help all # List every user-invocable skill
Argument Resolution
CATEGORY = "$ARGUMENTS[0]" # Optional: build, git, plan, quality, memory, config, explore, design, ops, all
# If provided, skip AskUserQuestion and show that category directly.
# $ARGUMENTS is the full string (CC 2.1.59 indexed access)
STEP 0: Dynamic Skill Discovery
**ALWAYS run this first** to get accurate, up-to-date skill data:
# ${CLAUDE_PLUGIN_ROOT} is set by the plugin runtime and points at the INSTALLED
# plugin. That is the normal case: a marketplace user has no src/ directory.
SKILLS_ROOT = "${CLAUDE_PLUGIN_ROOT}/skills"
matches = Grep(pattern="user-invocable:\\s*true", path=SKILLS_ROOT, output_mode="files_with_matches")
# Dogfooding fallback: inside the OrchestKit repo itself the skills live in the
# source tree. Retry there if the env var was unset or the probe found nothing.
if not matches:
SKILLS_ROOT = "src/skills"
matches = Grep(pattern="user-invocable:\\s*true", path=SKILLS_ROOT, output_mode="files_with_matches")If BOTH probes return zero files, say so plainly ("could not locate the OrchestKit skills directory, checked `${CLAUDE_PLUGIN_ROOT}/skills` and `src/skills`") and stop. Do NOT substitute a remembered list of skill names. Any such list is stale by construction and a confident wrong answer is worse than no answer.
For each matched file, read the frontmatter to get name, description, version, complexity, `argument-hint` and tags:
Read(file_path=f"{SKILLS_ROOT}/{skill_dir}/SKILL.md", limit=25)Every number rendered later is derived from this scan, never typed as a literal:
TOTAL = len(matches) # user-invocable skill count
Build the skill list dynamically. **Never hardcode counts or skill names.**
STEP 1: Category Selection
If CATEGORY argument provided, skip to STEP 2 with that category.
Otherwise, present categories interactively:
AskUserQuestion(
questions=[{
"question": "What type of task are you working on?",
"header": "Category",
# 4-option cap (CC schema): every category from STEP 2 is grouped into one of
# 3 buckets + "Show all". STEP 2 renders the constituent categories for the
# picked bucket. Descriptions name intents, never skills, so they cannot drift.
"options": [
{"label": "Build & ship", "description": "Writing code, tests, git and PRs, UI and design work"},
{"label": "Plan & assess", "description": "Requirements, planning, quality assessment, review"},
{"label": "Explore & operate", "description": "Codebase exploration, memory, setup, diagnostics, CI"},
{"label": "Show all", "description": "List every user-invocable skill"}
],
"multiSelect": false
}]
)STEP 2: Render Category
For the selected category, render the skill table from the data gathered in STEP 0.
Category Definitions
Categories are defined by **tag predicates**, never by a list of skill names, so a newly shipped skill lands in the right bucket without editing this file. Match each discovered skill's frontmatter `tags` against the sets below (case-insensitive, one hit is enough):
| Category | CLI arg | Matches any of these tags | |----------|---------|---------------------------| | BUILD | `build` | implementation, feature, testing, coverage, test-generation, verification, e2e | | GIT | `git` | git, github, commit, pull-request, pr, issue, bug-fix | | PLAN | `plan` | planning, ideation, prd, requirements, visualization | | QUALITY | `quality` | quality, assessment, evaluation, code-review, validation, grading | | MEMORY | `memory` | memory, decisions, graph-memory, consolidation | | CONFIG | `config` | setup, configuration, onboarding, diagnostics, health-check, dev-loop | | EXPLORE | `explore` | exploration, codebase, code-search, architecture, discovery | | DESIGN | `design` | design, design-context, design-tokens, design-to-code, frontend, ui, components, stylecards | | OPS | `ops` | ci, automation, telemetry, observability, release, migration | | OTHER | (none) | anything the rows above did not match |
A skill matching two categories is listed under both. That is expected, not a bug. OTHER is what makes the totals reconcile: every skill found in STEP 0 must appear somewhere in a full listing, so a skill nobody has categorized yet still shows up.
The STEP 1 picker only offers **3 buckets** (the AskUserQuestion schema caps a question at 4 options). Each bucket renders the union of its categories:
| Picker bucket | Renders categories | |---------------|--------------------| | Build & ship | BUILD + GIT + DESIGN | | Plan & assess | PLAN + QUALITY | | Explore & operate | MEMORY + CONFIG + EXPLORE + OPS + OTHER |
For each skill in the category, render:
/ork:{name} v{version} {complexity}
{description}
Example: /ork:{name} {argument-hint example}"Show all" — Full Listing
If user picks "Show all", render ALL user-invocable skills grouped by category from STEP 0 data, t
Read more
description: "OrchestKit help directory with categorized skill listings. Use when discovering skills for a task, finding the right workflow, or browsing capabilities." argument-hint: "[category]" model: haiku effort: low context: inherit user-invocable: true name: help allowed-tools: [AskUserQuestion, Read, Grep, Glob]
Auto-generated from skills/help/SKILL.md
Source: https://github.com/yonatangross/orchestkit
OrchestKit Skill Directory
Dynamic skill discovery: enumerates the installed plugin at runtime so listings are never stale.
> **CC 2.1.121+ tip:** if you just want to find one skill quickly, the native `/skills` command now has type-to-filter — open it and start typing the skill name. Use `/ork:help` when you want categorized browsing or rationale for *why* a skill applies.
Quick Start
/ork:help # Show all categories /ork:help build # Show BUILD skills only /ork:help git # Show GIT skills only /ork:help all # List every user-invocable skill
Argument Resolution
CATEGORY = "$ARGUMENTS[0]" # Optional: build, git, plan, quality, memory, config, explore, design, ops, all # If provided, skip AskUserQuestion and show that category directly. # $ARGUMENTS is the full string (CC 2.1.59 indexed access)
STEP 0: Dynamic Skill Discovery
**ALWAYS run this first** to get accurate, up-to-date skill data:
# ${CLAUDE_PLUGIN_ROOT} is set by the plugin runtime and points at the INSTALLED
# plugin. That is the normal case: a marketplace user has no src/ directory.
SKILLS_ROOT = "${CLAUDE_PLUGIN_ROOT}/skills"
matches = Grep(pattern="user-invocable:\\s*true", path=SKILLS_ROOT, output_mode="files_with_matches")
# Dogfooding fallback: inside the OrchestKit repo itself the skills live in the
# source tree. Retry there if the env var was unset or the probe found nothing.
if not matches:
SKILLS_ROOT = "src/skills"
matches = Grep(pattern="user-invocable:\\s*true", path=SKILLS_ROOT, output_mode="files_with_matches")If BOTH probes return zero files, say so plainly ("could not locate the OrchestKit skills directory, checked `${CLAUDE_PLUGIN_ROOT}/skills` and `src/skills`") and stop. Do NOT substitute a remembered list of skill names. Any such list is stale by construction and a confident wrong answer is worse than no answer.
For each matched file, read the frontmatter to get name, description, version, complexity, `argument-hint` and tags:
Read(file_path=f"{SKILLS_ROOT}/{skill_dir}/SKILL.md", limit=25)Every number rendered later is derived from this scan, never typed as a literal:
TOTAL = len(matches) # user-invocable skill count
Build the skill list dynamically. **Never hardcode counts or skill names.**
STEP 1: Category Selection
If CATEGORY argument provided, skip to STEP 2 with that category.
Otherwise, present categories interactively:
AskUserQuestion(
questions=[{
"question": "What type of task are you working on?",
"header": "Category",
# 4-option cap (CC schema): every category from STEP 2 is grouped into one of
# 3 buckets + "Show all". STEP 2 renders the constituent categories for the
# picked bucket. Descriptions name intents, never skills, so they cannot drift.
"options": [
{"label": "Build & ship", "description": "Writing code, tests, git and PRs, UI and design work"},
{"label": "Plan & assess", "description": "Requirements, planning, quality assessment, review"},
{"label": "Explore & operate", "description": "Codebase exploration, memory, setup, diagnostics, CI"},
{"label": "Show all", "description": "List every user-invocable skill"}
],
"multiSelect": false
}]
)STEP 2: Render Category
For the selected category, render the skill table from the data gathered in STEP 0.
Category Definitions
Categories are defined by **tag predicates**, never by a list of skill names, so a newly shipped skill lands in the right bucket without editing this file. Match each discovered skill's frontmatter `tags` against the sets below (case-insensitive, one hit is enough):
| Category | CLI arg | Matches any of these tags | |----------|---------|---------------------------| | BUILD | `build` | implementation, feature, testing, coverage, test-generation, verification, e2e | | GIT | `git` | git, github, commit, pull-request, pr, issue, bug-fix | | PLAN | `plan` | planning, ideation, prd, requirements, visualization | | QUALITY | `quality` | quality, assessment, evaluation, code-review, validation, grading | | MEMORY | `memory` | memory, decisions, graph-memory, consolidation | | CONFIG | `config` | setup, configuration, onboarding, diagnostics, health-check, dev-loop | | EXPLORE | `explore` | exploration, codebase, code-search, architecture, discovery | | DESIGN | `design` | design, design-context, design-tokens, design-to-code, frontend, ui, components, stylecards | | OPS | `ops` | ci, automation, telemetry, observability, release, migration | | OTHER | (none) | anything the rows above did not match |
A skill matching two categories is listed under both. That is expected, not a bug. OTHER is what makes the totals reconcile: every skill found in STEP 0 must appear somewhere in a full listing, so a skill nobody has categorized yet still shows up.
The STEP 1 picker only offers **3 buckets** (the AskUserQuestion schema caps a question at 4 options). Each bucket renders the union of its categories:
| Picker bucket | Renders categories | |---------------|--------------------| | Build & ship | BUILD + GIT + DESIGN | | Plan & assess | PLAN + QUALITY | | Explore & operate | MEMORY + CONFIG + EXPLORE + OPS + OTHER |
For each skill in the category, render:
/ork:{name} v{version} {complexity}
{description}
Example: /ork:{name} {argument-hint example}"Show all" — Full Listing
If user picks "Show all", render ALL user-invocable skills grouped by category from STEP 0 data, t
The Complete AI Development Toolkit for Claude Code — 114 skills, 37 agents, 212 hooks. Production-ready patterns for full-stack development.
Repo: yonatangross/orchestkit
Other commands on orchestkit.
- /assess
Assesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with
Open command - /audit-activation
Audits OrchestKit sub-agent activation from real spawn telemetry — computes the generic-vs-specialist spawn split, flags dormant agents (never fired), and classifies each as fires/mis-triggered/niche. The agent-side analogue of audit-skills. Use when specialized agents feel
Open command - /auto
Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only
Open command - /brainstorm
Design exploration using parallel agents through a 7-phase process: topic analysis, memory context, divergent ideation (10+ ideas), feasibility filtering, evaluation with devil's advocate scoring (0-10 across 7 dimensions), synthesis of top approaches, and trade-off comparison.
Open command - /ci-debug
Diagnose a failing CI run against an 11-pattern playbook. Classifies the failure, cites the relevant memory entry, proposes the exact fix command — but NEVER applies without explicit user approval. Use when a specific PR check or GitHub Actions run failed and you want a
Open command - /ci-sentinel
Daily autonomous classifier for failing PRs across your repos. Runs /ci-debug headless against every open PR with red required checks, posts the verdict as a collapsed PR comment, and appends to a per-repo .sentinel/ledger.jsonl. v1 is propose-don't-apply — NEVER auto-pushes a
Open command

