From copilot-cli-toolkit
Runs 5-layer interview eliciting team rhythms, decisions, dependencies, institutional knowledge, and friction; outputs structured operating model JSON for planning and agent customization.
How this skill is triggered — by the user, by Claude, or both
Slash command
/copilot-cli-toolkit:work-operating-modelclaude-sonnet-4-5The summary Claude sees in its skill listing — used to decide when to auto-load this skill
A conversation-first elicitation skill. Surface what is documented, what is tacit, and where the two disagree. Output is a structured operating model that downstream agents (`architect`, `roadmap`, `orchestrator`) can read.
A conversation-first elicitation skill. Surface what is documented, what is tacit, and where the two disagree. Output is a structured operating model that downstream agents (architect, roadmap, orchestrator) can read.
| Trigger Phrase | Operation |
|---|---|
elicit operating model | Start the 5-layer interview |
interview team operating model | Start the 5-layer interview |
how does this team actually work | Start the 5-layer interview |
resume operating model interview | Continue from the last completed layer |
validate operating model | Run scripts/validate_operating_model.py against an output JSON |
Use this skill when:
Do not use this skill when:
analyst agent.explainer agent.retrospective agent.| Capability | Investigates | Output |
|---|---|---|
analyst agent | Code, repo state, bug paths | Findings document |
explainer agent | Concepts, decisions for a reader | Explainer prose |
retrospective agent | A bounded past period | Learning matrix |
| work-operating-model | Team operating reality (people-process) | Structured operating model JSON |
The interview proceeds in order. Each layer answers one question and produces one section of the output JSON. Skip a layer only when the team explicitly cannot answer it; record the gap in metadata.skipped_layers.
| # | Layer | Question | Output Section |
|---|---|---|---|
| 1 | Rhythms | When does work happen, and on what cadence? | rhythms |
| 2 | Decisions | Who decides what, and how is the decision recorded? | decisions |
| 3 | Dependencies | Who do you wait on, and who waits on you? | dependencies |
| 4 | Institutional Knowledge | What lives in someone's head and not in a doc? | institutional_knowledge |
| 5 | Friction | What is broken or slow that the team has accepted? | friction |
For the full prompt list per layer, read references/layer-questions.md. For the output JSON contract, read references/entry-contract.md.
The interview runs in three phases.
team section.documented (link the doc) or tacit (note the source person). Disagreement between sources is a finding, not an error.<workspace>/operating-model.json (caller chooses workspace). Optionally also emit USER.md, SOUL.md, HEARTBEAT.md as human-readable views derived from the JSON. The JSON is canonical; the markdown files are projections.python3 .claude/skills/work-operating-model/scripts/validate_operating_model.py <path-to-json>. Exit 0 means the schema holds.| Script | Purpose | Exit Codes |
|---|---|---|
scripts/validate_operating_model.py <path> | Validate operating-model.json against schema v1.0.0 | 0 ok, 1 schema failure, 2 invalid usage |
Pass --skip-path-validation to bypass CWE-22 path containment when reading fixtures from outside the repo (tests only).
The interview is long. To resume:
operating-model.json.metadata.completed_layers. The next layer is the first one not in that list.Do not silently rewrite an earlier layer. If a previous answer needs to change, open the discussion, then update the section and append to metadata.revisions.
The full schema is in references/entry-contract.md. The minimum valid document has:
schema_version: "1.0.0"team: object with namerhythms, decisions, dependencies, institutional_knowledge, friction: each present, each an object (may be empty if a layer was skipped)metadata: object with interview_date (YYYY-MM-DD), interview_status (in_progress or complete), completed_layers (list)The validator (scripts/validate_operating_model.py) enforces these and returns a non-zero exit on schema failure.
| Anti-Pattern | Problem | Fix |
|---|---|---|
| Treat the interview as a survey to fill in alone | Misses tacit knowledge entirely | Hold the conversation; capture during the talk |
Merge documented and tacit into one bucket | Erases the gap that is the whole point | Tag every item explicitly |
| Skip layer 4 because it is hard | Layer 4 is where most useful findings live | Ask anyway; if unanswered, record it in metadata.skipped_layers with a reason |
| Edit the JSON by hand without reopening the conversation | Drift between model and reality | Re-interview, then update |
| Run the interview once and call the model done | Operating models drift | Re-validate quarterly; bump metadata.interview_date |
Before declaring an operating model complete:
metadata.skipped_layers).documented or tacit.metadata.interview_status is complete.python3 .claude/skills/work-operating-model/scripts/validate_operating_model.py operating-model.json exits 0.USER.md projection) and agreed.references/layer-questions.md - prompt list per layerreferences/entry-contract.md - full output JSON schemascripts/validate_operating_model.py - schema validatornpx claudepluginhub rjmurillo/ai-agentsRuns 5-layer interview to elicit team operating model covering rhythms, decisions, dependencies, institutional knowledge, friction; outputs structured JSON for downstream agents.
Reverse-engineers or interviews to produce an org map (ORG.md) with roles, decision rights, team shape, and ways of working. Run early for stakeholder mapping.
Defines and evolves team interaction modes using Team Topologies patterns: Collaboration, X-as-a-Service, Facilitating. For team planning, design, and best practices.