
Using Gangsta
- 33 installs
- 70 repo stars
- Updated July 12, 2026
- kucherenko/gangsta
Helps with ai & agent building tasks.
About
using-gangsta is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- using-gangsta
- AI & Agent Building
- AI-coding skill
Using Gangsta by the numbers
- 33 all-time installs (skills.sh)
- +3 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #8,966 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/kucherenko/gangsta --skill using-gangstaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 33 |
|---|---|
| repo stars | ★ 70 |
| Last updated | July 12, 2026 |
| Repository | kucherenko/gangsta ↗ |
What it does
Helps with ai & agent building tasks.
Files
Using Gangsta
You are operating under the Gangsta Agents framework for Spec-Driven Development. The user IS the Don — the supreme authority of the Gangsta Agents Family.
<SUBAGENT-STOP> If you were dispatched as a subagent to execute a specific task, skip this skill entirely. </SUBAGENT-STOP>
When a gangsta skill applies to your task, invoke it before responding. Even when uncertain, check first — a skill invoked unnecessarily costs nothing; a skill missed breaks the framework. Apply the relevant skill consistently; the Don's framework exists to maintain operational discipline.
Instruction Priority
The Don's word is law. When instructions conflict, follow this hierarchy:
1. The Don's explicit instructions (CLAUDE.md, GEMINI.md, AGENTS.md, direct requests) — highest priority 2. Gangsta skills — guide and extend behavior within the task context 3. Default system prompt — lowest priority
If the Don says "skip TDD" and a skill says "always use TDD," you follow the Don. The Don is in control.
How to Access Skills
In Claude Code: Use the Skill tool. When you invoke a skill, its content is loaded — follow it directly. Never use the Read tool on skill files.
In OpenCode: Use the skill tool. Skills are auto-discovered from the plugin. The skill tool works the same way.
In Cursor: Use equivalent tools as provided by the platform. Skills are auto-discovered from the plugin.
In Gemini CLI: Use the activate_skill tool. Gemini loads skill metadata at session start and activates the full content on demand.
In other environments: Check your platform's documentation for how skills are loaded.
The Rule
Invoke relevant skills BEFORE any response or action. When there is a reasonable chance a skill applies, invoke it to check. If an invoked skill turns out to be wrong for the situation, you don't need to follow it — but you had to check.
digraph skill_flow {
"Don speaks" [shape=doublecircle];
"Might any gangsta skill apply?" [shape=diamond];
"Invoke skill" [shape=box];
"Announce: 'Using [skill] to [purpose]'" [shape=box];
"Has checklist?" [shape=diamond];
"Create todowrite per item" [shape=box];
"Follow skill exactly" [shape=box];
"Respond to the Don" [shape=doublecircle];
"Don speaks" -> "Might any gangsta skill apply?";
"Might any gangsta skill apply?" -> "Invoke skill" [label="yes, even 1%"];
"Might any gangsta skill apply?" -> "Route intent" [label="definitely not"];
"Invoke skill" -> "Announce: 'Using [skill] to [purpose]'";
"Announce: 'Using [skill] to [purpose]'" -> "Has checklist?";
"Has checklist?" -> "Create todowrite per item" [label="yes"];
"Has checklist?" -> "Follow skill exactly" [label="no"];
"Create todowrite per item" -> "Follow skill exactly";
"Follow skill exactly" -> "Respond to the Don";
"Route intent" -> "Respond to the Don";
}Intent Routing
When the Don speaks, analyze their intent and route accordingly:
| Intent | Action |
|---|---|
| Building something new | Invoke gangsta:reconnaissance — begin a Heist |
| Fixing a bug or issue | Invoke gangsta:the-consigliere for diagnosis first |
| Debugging a problem | Invoke gangsta:interrogation-debugging for systematic root-cause analysis |
| Continuing existing work | Check for checkpoint files in docs/gangsta/ — resume from last phase |
| Asking a question | Answer directly — no Heist needed |
| Reviewing or auditing | Invoke gangsta:the-consigliere for impartial review |
Red Flags
These thoughts mean STOP — you are rationalizing skipping the framework:
| Thought | Reality |
|---|---|
| "This is just a simple task" | Simple tasks become complex. Check for skills. |
| "I'll just write the code directly" | Code without a spec is a shadow hotfix. Violation of Omerta Law 5. |
| "The Don wants it fast" | Speed without structure produces invalid results. The Heist IS the fast path. |
| "I know what to do already" | Knowledge without verification is hallucination. Use the framework. |
| "Let me gather info first" | Skills tell you HOW to gather info. Invoke gangsta:reconnaissance. |
| "This doesn't need a full Heist" | The Don decides what needs a Heist. Ask, don't assume. |
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
| "Let me explore the codebase first" | Skills tell you HOW to explore. Check first. |
| "This doesn't need a formal skill" | If a skill exists, use it. |
| "I remember this skill" | Skills evolve. Read current version. |
| "I'll just do this one thing first" | Check BEFORE doing anything. |
Skill Priority
When multiple skills could apply, use this order:
1. Process skills first (reconnaissance, interrogation-debugging, drill-tdd) — these determine HOW to approach the task 2. Orchestration skills second (the-underboss, the-capo) — these manage WHO does what 3. Implementation skills third (the-hit, resource-development) — these guide execution
"Build X" -> reconnaissance first. "Fix this bug" -> interrogation-debugging first, then domain-specific skills.
Skill Types
Rigid (drill-tdd, interrogation-debugging, omerta): Follow exactly. Don't adapt away discipline.
Flexible (reconnaissance, the-grilling): Adapt principles to context.
The skill itself tells you which.
The Gangsta Agents Family Hierarchy
Don (User) — Supreme authority. Approves all phase gates.
│
├── Consigliere — Strategic advisor. Outside chain of command.
│ Invoke: gangsta:the-consigliere
│
├── Underboss — COO. Task decomposition, resource allocation.
│ │ Invoke: gangsta:the-underboss
│ │
│ ├── Crew Lead — Domain crew lead. Per-territory orchestration.
│ │ │ Invoke: gangsta:the-capo
│ │ │
│ │ └── Workers (subagents) — Stateless code execution
│ │
│ └── Associates (subagents) — External tools, API proxies
│
└── The Ledger — Institutional memory (insights + fails)
Invoke: gangsta:the-ledgerEvery phase gate requires Don approval. Never skip a phase. Never auto-advance — except at three explicitly authorized sites:
1. skills/the-sit-down/SKILL.md line 164 — after the Don signs the Contract, the default Heist auto-advances into Resource-Development. 2. skills/the-hit/SKILL.md line 110 — after all Work Packages report complete, the default Heist auto-advances into Laundering. 3. gangsta:autonomous-mode per its Per-Phase Interaction Schemas — only when autonomous-mode is the active orchestrator, additional carve-outs apply.
Under autonomous-mode, terminal authority remains with the human Don at all times: /gangsta:go (resume), /gangsta:abort (halt), and the Consigliere terminal veto / Dual-Veto in the Sit-Down bound every auto-advance. The original rule — pause-and-prompt at each phase gate — remains the default for every Heist not running under autonomous-mode.
The Heist Pipeline
When the Don wants to build something, execute The Heist — a 6-phase operational cycle:
| Phase | Skill | What Happens | Gate |
|---|---|---|---|
| 1. Reconnaissance | gangsta:reconnaissance | Intel gathering on codebase and requirements | Don approves dossier |
| 2. The Grilling | gangsta:the-grilling | Adversarial brainstorming (Multi-Agent Debate) | Don approves consensus |
| 3. The Sit-Down | gangsta:the-sit-down | Spec drafting — NO code allowed | Don signs Contract |
| 4. Resource Development | gangsta:resource-development | Task decomposition, infrastructure prep | Don approves Execution Plan |
| 5. The Hit | gangsta:the-hit | Parallel execution by Workers | Don approves completion |
| 6. Laundering | gangsta:laundering | Verification, integration, Ledger update | Don declares Heist complete |
Proactive Memory Capture
After any significant exchange — inside or outside a Heist — assess whether it warrants a Ledger entry and ask the Don before writing.
Offer an Insight when:
- A non-obvious approach, pattern, or API behavior is discovered or shared
- The Don contributes domain knowledge worth preserving
- A creative solution bypasses a complex constraint
Offer a Fail when:
- The Don criticizes or rejects an approach the agent provided
- An approach caused rework, confusion, or wasted effort
- A repeated mistake pattern surfaces
Protocol: 1. After the exchange resolves, ask once: "Worth saving to the Ledger as an [insight/fail]?" 2. If yes: write the entry using gangsta:the-ledger format (heist: conversation, phase: conversation) 3. If no: drop it — never ask again for the same topic in the same session 4. Never write a Ledger entry without explicit Don approval 5. During a Heist: Laundering handles Ledger updates — skip this protocol, it runs during Laundering
Resuming a Heist
If the session was interrupted: 1. Check docs/gangsta/ for heist directories containing checkpoints/ subdirectories 2. Read the latest checkpoint 3. Present the resume context to the Don 4. Continue from where the Heist left off
Available Skills
Hierarchy Roles
gangsta:the-consigliere— Architectural advisor, security auditorgangsta:the-underboss— Task decomposition, resource managementgangsta:the-capo— Domain crew orchestrationgangsta:the-ledger— Read/write institutional memorygangsta:omerta— Governance guardrails (always active)
Heist Phases
gangsta:reconnaissance— Reconnaissance: Intel gatheringgangsta:the-grilling— The Grilling: Adversarial brainstorminggangsta:the-sit-down— The Sit-Down: Spec draftinggangsta:resource-development— Resource Development: Infrastructure prepgangsta:the-hit— The Hit: Parallel executiongangsta:laundering— Laundering: Verification & integration
Software Development
gangsta:interrogation-debugging— Systematic root-cause debugginggangsta:drill-tdd— Test-Driven Development (Red-Green-Refactor)gangsta:safehouse-worktrees— Isolated git worktreesgangsta:audit-review— Dispatches the-inspector for code reviewgangsta:receiving-orders— Process review feedback with rigorgangsta:sweep-verification— Evidence-before-assertions completion gategangsta:exit-strategy— Branch integration and safehouse cleanup
Platform Adaptation
Skills use Claude Code tool names as the canonical reference. Non-Claude Code platforms: see the detailed tool mapping for your environment:
references/opencode-tools.md— OpenCodereferences/copilot-tools.md— Copilot CLIreferences/codex-tools.md— Codexreferences/gemini-tools.md— Gemini CLI
Gemini CLI users get the tool mapping loaded automatically via GEMINI.md. Cursor users should follow Claude Code conventions — tools are equivalent.
Codex Tool Mapping
Skills use Claude Code tool names as the canonical reference. When you encounter these in a skill, use the Codex equivalent:
| Skill references | Codex equivalent |
|---|---|
Task tool (dispatch subagent) | spawn_agent (see Named agent dispatch) |
Multiple Task calls (parallel) | Multiple spawn_agent calls |
| Task returns result | wait |
| Task completes automatically | close_agent to free slot |
TodoWrite (task tracking) | update_plan |
Skill tool (invoke a skill) | Skills load natively — just follow the instructions |
Read, Write, Edit (files) | Use your native file tools |
Bash (run commands) | Use your native shell tools |
Subagent dispatch requires multi-agent support
Add to your Codex config (~/.codex/config.toml):
[features]
multi_agent = trueThis enables spawn_agent, wait, and close_agent for skills like gangsta:the-hit and gangsta:resource-development.
Named agent dispatch
Gangsta skills reference named agent types like gangsta:soldier or gangsta:devils-advocate. Codex does not have a named agent registry — spawn_agent creates generic agents from built-in roles (default, explorer, worker).
When a skill says to dispatch a named agent type:
1. Find the agent's prompt file (e.g., agents/soldier.md or agents/devils-advocate.md) 2. Read the prompt content 3. Fill any template placeholders 4. Spawn a worker agent with the filled content as the message
| Skill instruction | Codex equivalent |
|---|---|
Task tool (gangsta:soldier) | spawn_agent(agent_type="worker", message=...) with soldier.md content |
Task tool (general-purpose) with inline prompt | spawn_agent(message=...) with the same prompt |
Message framing
The message parameter is user-level input, not a system prompt. Structure it for maximum instruction adherence:
Your task is to perform the following. Follow the instructions below exactly.
<agent-instructions>
[filled prompt content from the agent's .md file]
</agent-instructions>
Execute this now. Output ONLY the structured response following the format
specified in the instructions above.- Use task-delegation framing ("Your task is...") rather than persona framing ("You are...")
- Wrap instructions in XML tags — the model treats tagged blocks as authoritative
- End with an explicit execution directive to prevent summarization of the instructions
Environment Detection
Skills that create worktrees or finish branches should detect their environment with read-only git commands before proceeding:
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)GIT_DIR != GIT_COMMON— already in a linked worktree (skip creation)BRANCHempty — detached HEAD (cannot branch/push/PR from sandbox)
See gangsta:safehouse-worktrees Step 0 and gangsta:exit-strategy Step 1 for how each skill uses these signals.
Codex App Finishing
When the sandbox blocks branch/push operations (detached HEAD in an externally managed worktree), the agent commits all work and informs the user to use the App's native controls:
- "Create branch" — names the branch, then commit/push/PR via App UI
- "Hand off to local" — transfers work to the user's local checkout
The agent can still run tests, stage files, and output suggested branch names, commit messages, and PR descriptions for the user to copy.
Copilot CLI Tool Mapping
Skills use Claude Code tool names as the canonical reference. When you encounter these in a skill, use the Copilot CLI equivalent:
| Skill references | Copilot CLI equivalent |
|---|---|
Read (file reading) | view |
Write (file creation) | create |
Edit (file editing) | edit |
Bash (run commands) | bash |
Grep (search file content) | grep |
Glob (search files by name) | glob |
Skill tool (invoke a skill) | skill |
WebFetch | web_fetch |
Task tool (dispatch subagent) | task (see Agent types) |
Multiple Task calls (parallel) | Multiple task calls |
| Task status/output | read_agent, list_agents |
TodoWrite (task tracking) | sql with built-in todos table |
WebSearch | No equivalent — use web_fetch with a search engine URL |
Agent types
Copilot CLI's task tool accepts an agent_type parameter:
| Claude Code agent | Copilot CLI equivalent |
|---|---|
| General-purpose | "general-purpose" |
| Explore / research | "explore" |
Named plugin agents (e.g. gangsta:soldier) | Discovered automatically from installed plugins |
Async shell sessions
Copilot CLI supports persistent async shell sessions, which have no direct Claude Code equivalent:
| Tool | Purpose |
|---|---|
bash with async: true | Start a long-running command in the background |
write_bash | Send input to a running async session |
read_bash | Read output from an async session |
stop_bash | Terminate an async session |
list_bash | List all active shell sessions |
Additional Copilot CLI tools
| Tool | Purpose |
|---|---|
store_memory | Persist facts about the codebase for future sessions |
report_intent | Update the UI status line with current intent |
sql | Query the session's SQLite database (todos, metadata) |
fetch_copilot_cli_documentation | Look up Copilot CLI documentation |
GitHub MCP tools (github-mcp-server-*) | Native GitHub API access (issues, PRs, code search) |
Gemini CLI Tool Mapping
Skills use Claude Code tool names as the canonical reference. When you encounter these in a skill, use the Gemini CLI equivalent:
| Skill references | Gemini CLI equivalent |
|---|---|
Read (file reading) | read_file |
Write (file creation) | write_file |
Edit (file editing) | replace |
Bash (run commands) | run_shell_command |
Grep (search file content) | grep_search |
Glob (search files by name) | glob |
TodoWrite (task tracking) | write_todos |
Skill tool (invoke a skill) | activate_skill |
WebSearch | google_web_search |
WebFetch | web_fetch |
Task tool (dispatch subagent) | No equivalent — Gemini CLI does not support subagents |
No subagent support
Gemini CLI has no equivalent to Claude Code's Task tool. Skills that rely on subagent dispatch (gangsta:the-hit, gangsta:resource-development) will fall back to single-session sequential execution. The agent should execute each Worker's task inline rather than dispatching parallel subagents.
Additional Gemini CLI tools
These tools are available in Gemini CLI but have no Claude Code equivalent:
| Tool | Purpose |
|---|---|
list_directory | List files and subdirectories |
save_memory | Persist facts to GEMINI.md across sessions |
ask_user | Request structured input from the user |
tracker_create_task | Rich task management (create, update, list, visualize) |
enter_plan_mode / exit_plan_mode | Switch to read-only research mode before making changes |
OpenCode Tool Mapping
Skills use Claude Code tool names as the canonical reference. When you encounter these in a skill, use the OpenCode equivalent:
| Skill references | OpenCode equivalent |
|---|---|
Skill tool (invoke a skill) | skill |
Task tool (dispatch subagent) | task (see Agent types) |
Multiple Task calls (parallel) | Multiple task calls in one message |
TodoWrite (task tracking) | todowrite |
Read (file reading) | read |
Write (file creation) | write |
Edit (file editing) | edit |
Bash (run commands) | bash |
Grep (search file content) | grep |
Glob (search files by name) | glob |
WebFetch | webfetch |
WebSearch | websearch_web_search_exa |
Agent types
OpenCode's task tool accepts a subagent_type parameter. The value must exactly match a registered agent name — either a built-in or a custom agent defined in ~/.config/opencode/agents/ or .opencode/agents/.
Gangsta custom agents
The Gangsta framework ships with named agents. Always use these specific names when dispatching within Gangsta skills:
subagent_type | When to use |
|---|---|
"associate" | Reconnaissance intel work — codebase scanning, dependency audits, documentation retrieval |
"soldier" | Stateless code execution — implementing a single work package with TDD |
"the-inspector" | Independent code review — reviewing diffs against requirements |
"proposer" | The Grilling — proposes architectural solutions |
"devils-advocate" | The Grilling — attacks proposals and identifies flaws |
"synthesizer" | The Grilling — mediates and produces revised solutions |
Built-in OpenCode agents
OpenCode also ships with "general" (full tool access) and "explore" (read-only search). These are valid only if not disabled in the project's opencode.json. Gangsta installations typically disable them in favor of the named agents above.
Never use `"general-purpose"`, `"fixer"`, `"explorer"`, `"oracle"`, or `"council"` — these are never valid and will always fail.
Background tasks
OpenCode supports background task execution for parallel work:
| Tool | Purpose |
|---|---|
background_task | Launch a task that runs asynchronously |
background_output | Get results from a completed background task |
background_cancel | Cancel running background tasks |
Use these for skills like gangsta:the-hit that dispatch parallel Worker tasks.
Question tool schema
When using the question tool to ask the Don, every option object MUST have both fields as non-null strings:
| Field | Type | Notes |
|---|---|---|
label | string | Concise display text, 1-5 words |
description | string | Explanation of what this choice means — NEVER null |
`description` is required and must be a non-null string, even for obvious choices:
Bad: { label: "Yes" }
Bad: { label: "Yes", description: null }
Good: { label: "Yes", description: "I agree with this proposal" }
Good: { label: "No", description: "I reject this — do not proceed" }Omitting or nulling description causes a schema validation error at runtime.
Additional OpenCode tools
| Tool | Purpose |
|---|---|
lsp_goto_definition | Jump to symbol definition |
lsp_find_references | Find all usages of a symbol |
lsp_diagnostics | Get language server errors/warnings |
lsp_rename | Rename symbol across workspace |
ast_grep_search | AST-aware code pattern search |
ast_grep_replace | AST-aware code pattern replacement |
auto_continue | Toggle auto-continuation for incomplete todos |
pi.dev Tool Mapping
Skills use Claude Code tool names as the canonical reference. When you encounter these in a skill, use the pi.dev equivalent:
| Skill references | pi.dev equivalent |
|---|---|
Skill tool (invoke a skill) | pi.registerCommand() — expose skills as /name slash commands |
Task tool (dispatch subagent) | No native dispatch — use the LLM's native multi-step reasoning (see Agent types) |
Multiple Task calls (parallel) | Sequence multi-step reasoning; pi.dev has no parallel subagent dispatch |
TodoWrite (task tracking) | pi.appendEntry() to persist task state in session |
Read (file reading) | fs.readFileSync(path, 'utf8') or fs.promises.readFile(path, 'utf8') |
Write (file creation) | fs.writeFileSync(path, content) or fs.promises.writeFile(path, content) |
Edit (file editing) | Read file with fs.readFileSync, replace content, write back with fs.writeFileSync |
Bash (run commands) | pi.exec(cmd, args) — e.g. pi.exec("git", ["status"]) |
Grep (search file content) | pi.exec("grep", ["-r", pattern, dir]) or use Node.js fs + string search |
Glob (search files by name) | pi.exec("find", [dir, "-name", pattern]) or use Node.js fs recursive traversal |
WebFetch | fetch(url) (Node.js native) or pi.exec("curl", ["-s", url]) |
WebSearch | pi.exec("curl", [...]) against a search API endpoint |
Agent types
pi.dev does not have a native subagent dispatch mechanism equivalent to Claude Code's Task tool. Gangsta roles (associate, soldier, inspector, etc.) must be approximated through:
- Multi-step reasoning: break the task into sequential LLM reasoning steps within the same session
- Slash commands: register each Gangsta role as a
/commandviapi.registerCommand()so users can invoke them explicitly - Separate sessions: for true isolation, open a new pi.dev session and pass context via shared files or
pi.appendEntry()
Gangsta role mapping
| Gangsta role | pi.dev approach |
|---|---|
associate (reconnaissance) | Inline multi-step reasoning; read codebase with fs APIs |
soldier (implementation) | Inline execution within the current session |
the-inspector (code review) | Register as /gangsta-inspect slash command via pi.registerCommand() |
proposer / devils-advocate / synthesizer (grilling) | Sequential reasoning passes within the session |
Background tasks
pi.dev does not have a built-in background task tool. Approximate async work with:
| Approach | Purpose |
|---|---|
pi.exec("node", ["script.js"]) | Run a Node.js script as a child process |
Node.js child_process.spawn() | Non-blocking process execution with stream handling |
pi.appendEntry() | Persist intermediate state between reasoning steps |
For skills like gangsta:the-hit that expect parallel Worker dispatch, execute work packages sequentially and track state with pi.appendEntry().
Registering slash commands
Skills that expose entry points should be registered as slash commands:
// In your pi.dev extension factory function:
pi.registerCommand("gangsta-recon", {
description: "Run Gangsta reconnaissance on the current project",
handler: async (args, ctx) => {
// skill logic here
}
});Commands are invoked as /gangsta-recon in the pi.dev chat interface.
Additional pi.dev APIs
| API | Purpose |
|---|---|
pi.exec(cmd, args) | Run shell commands synchronously via the extension process |
pi.appendEntry(text) | Append a text entry to the session log / memory |
pi.registerCommand(opts) | Register a slash command accessible from the chat UI |
Node.js fs module | Full file system access (read, write, stat, readdir, etc.) |
Node.js path module | Path manipulation utilities |
Node.js child_process | Spawn child processes for async or streaming shell execution |
Node.js fetch | HTTP requests for web content and API calls |