# Plan Enforcer Combobulate

> Public flow name is `discuss`. Use this compatibility skill before `plan-enforcer-draft` when the user's request is ambiguous, underspecified, or mixing multiple outcomes --- it writes the intent packet the drafter consumes so the resulting plan reflects what the user actually wants instead of what sounded reasonable to guess.

- **Type:** Skill
- **Install:** `agentstack add skill-jccidc-plan-enforcer-plan-enforcer-combobulate`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [jccidc](https://agentstack.voostack.com/s/jccidc)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [jccidc](https://github.com/jccidc)
- **Source:** https://github.com/jccidc/.plan-enforcer/tree/main/skills/plan-enforcer-combobulate
- **Website:** https://www.jccidc.com/

## Install

```sh
agentstack add skill-jccidc-plan-enforcer-plan-enforcer-combobulate
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Plan Enforcer Discuss

Public front-end name is `discuss -> draft -> review`. This skill file
and packet path stay on legacy `combobulate` naming for compatibility.

An intent-capture gate. The job is to turn a fuzzy request ("clean up
the auth flow", "make the onboarding better") into a concrete written
intent packet before anyone drafts tasks against it. Mis-scoped plans
fail downstream no matter how rigorous the drafting is.

This skill is the "brainstorming HARD-GATE equivalent" discussed in
moat-todo, but mechanism-distinct: the output is a file, not a
conversational acknowledgment. `plan-enforcer-draft` reads the packet
on its next invocation.

## When to use

Use this when any of:

- The user's request spans multiple outcomes that could each be their
  own plan ("add OAuth, fix the session timeout, and rewrite the
  middleware tests")
- The request is framed in solution language without naming the
  problem ("let's add Redis" without "because X is slow under Y load")
- Success criteria are implicit or aspirational ("make it faster",
  "make it more reliable") without measurable targets
- The relevant codebase has more than one plausible interpretation of
  the request and the wrong interpretation would waste a phase

Skip this skill when the request is already concrete ("add a /healthz
endpoint returning 200 OK"), the user says "skip discuss" or "skip
combobulate" or similar, or a packet at
`.plan-enforcer/combobulate.md` already exists and is recent
(mtime "`
   - same fallback for manual rows:
     `node "$HOME/.claude/skills/plan-enforcer/src/awareness-cli.js" add --intent ""`
   - do not paraphrase those quotes into awareness rows; exact text
     only

## Recommended packet shape

```md
# 

## Source Ask
> 

## Normalized Goal

## Non-Negotiables
- NN1: 

## Hidden Contract Candidates
- HC1: 

## Plausible Interpretations
- PI1: 
- PI2: 

## Chosen Interpretation

## Rejected / Forbidden Narrowings
- FN1: 

## In Scope
- 
- 

## Out of Scope
- 

## Constraints (optional)
- 

## Success Signals (optional)
- 

## Drift Risks (optional)
- DR1: 

## Proof Requirements (optional)
- PR1: 

## Draft Handoff (optional)
- phase shape hint: 
- planning red lines: 
```

## Recommended method

Run in three passes:

1. Ask capture
   - preserve the source ask
   - normalize the goal
   - extract obvious constraints and scope
2. Meaning defense
   - list plausible interpretations
   - choose one or ask the user
   - name forbidden narrowings and drift risks
3. Draft handoff
   - define success signals
   - define proof requirements
   - suggest phase shape without turning it into tasks

## Anti-patterns

Producing a packet that looks like a plan is the failure mode. Smells:

- Numbered task list in the packet -> stop, this is the drafter's job
- Time estimates or file paths in the packet -> stop, too early
- More than ~600 words with no real ambiguity handling -> too much
  summary, not enough structure
- Success signals that are aspirational ("make it feel fast") rather
  than observable ("p95 under 200ms under 50 rps")
- Missing `Rejected / Forbidden Narrowings` on a risky or fuzzy ask
- Missing `Proof Requirements` when later verification will matter

## Handoff

After writing the packet:

- Tell the user the path (`.plan-enforcer/combobulate.md`).
- Summarize the key decisions captured in one line per major section.
- Offer next step in public wording: "want me to draft the plan
  against this discuss packet?" and wait. Do not auto-invoke the
  drafter.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [jccidc](https://github.com/jccidc)
- **Source:** [jccidc/.plan-enforcer](https://github.com/jccidc/.plan-enforcer)
- **License:** MIT
- **Homepage:** https://www.jccidc.com/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-jccidc-plan-enforcer-plan-enforcer-combobulate
- Seller: https://agentstack.voostack.com/s/jccidc
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
