Extract tacit engineering knowledge through guided interviews and generate structured steerings. Use when user mentions "steerings", "tacit knowledge", "conventions", "engineering practices", "interview", or wants to document team/project knowledge. Also activates when user asks for "steerings for X", "document X conventions", "continue steerings", "resume interview", or wants to extract knowledge about a specific topic. Supports reviewing and transforming existing steerings to standard format. Auto-detects existing sessions and offers to continue incomplete ones.
/plugin marketplace add timurkhakhalev/cc-plugins/plugin install steerings-specs-generator@timur-khakhalev-marketplaceThis skill is limited to using the following tools:
flow-diagram.mdinterview-packs.mdpack-reference.mdsteering-template.mdConducts context-aware interviews to extract tacit engineering knowledge and generate agent-readable steerings. Format: Intent (Why) → Rules (What) → Practices (How) → Meta.
Supports predefined packs (8 areas) and custom topics (user-specified).
Flow overview: See flow-diagram.md for visual representation.
| Keywords | Mode |
|---|---|
| "review steerings", "transform steerings", "fix format" | → Review Mode (Step R) |
| "continue steerings", "continue session", "resume interview" | → Interview Mode (Step 0) with session check |
| "steerings", "tacit knowledge", "interview", "conventions" | → Interview Mode (Step 0) |
Before configuring paths, check if sessions already exist in the repo:
Scan common session directories:
.sessions/sessions/docs/sessions/If sessions found, present AskUserQuestion:
questions:
- question: "Found existing session(s). Continue or start fresh?"
header: "Session"
options:
- label: "Continue {sessionId}"
description: "Resume incomplete session ({N} of {M} packs done)"
- label: "Start new session"
description: "Create fresh session with new ID"
If continuing existing session:
sessionsPath to parent directory of found sessionsessionId to selected session name{sessionsPath}{sessionId}/ for completed pack files{packId}.md exists AND## Interview section with at least one ### Q entrycompletedPacks[] list (pack IDs to skip)explore-docs-conventions.md and explore-repo-context.md paths if they existIf starting new or no sessions found → Continue to Step 0a
Ask user to confirm paths using AskUserQuestion:
questions:
- question: "Where should steering files be saved?"
header: "Steerings"
options: ["./steerings/", "docs/steerings/", ".memory-bank/steerings/", "Custom"]
- question: "Where should session files be saved?"
header: "Sessions"
options: ["./sessions/", ".sessions/", "docs/sessions/", "Custom"]
- question: "Where should action items be saved?"
header: "Backlog"
options: ["./backlog/", "Same as steerings parent", ".backlog/", "Custom"]
Store: steeringsPath, sessionsPath, backlogPath. Create directories if needed.
Defaults: steerings/, sessions/, backlog/
sessionId - short words idCustom topic detected (patterns: "steerings for X", "document X conventions"):
packId, packName, packType: "custom", customTopicDescriptionNo custom topic → Present 8 predefined packs as multi-select:
| Pack | ID |
|---|---|
| Codebase Topology & Ownership | codebase-topology-ownership |
| Architecture & Design Invariants | architecture-design-invariants |
| Business Domain Contracts | business-domain-contracts |
| Quality & Style Assurance | quality-style-assurance |
| Testing & Verification Strategy | testing-verification-strategy |
| Risk & Historical Landmines | risk-historical-landmines |
| Security, Data & Compliance | security-data-compliance |
| Delivery Lifecycle & Change Flow | delivery-lifecycle-change-flow |
Run TWO Explore agents in parallel. Each writes report to {sessionsPath}{sessionId} and returns path.
Explore #1 - Docs & Conventions:
Analyze repository for: steering files, CONVENTIONS.md, ARCHITECTURE.md,
CLAUDE.md, README conventions, eslint/prettier/tsconfig.
OUTPUT: Write to `{sessionsPath}{sessionId}/explore-docs-conventions.md`, return path.
Explore #2 - Repo Context:
Analyze: project purpose, tech stack, directory structure, main modules, patterns.
OUTPUT: Write to `{sessionsPath}{sessionId}/explore-repo-context.md`, return path.
Capture paths: docsConventionsReportPath, repoContextReportPath
Filter packs: If completedPacks[] exists (from session continuation), exclude those pack IDs from processing.
Show progress when continuing:
Continuing session: {sessionId}
✅ Completed: {completedPacks.join(', ')}
⏳ Remaining: {remainingPacks.join(', ')}
Spawn a Task agent per pack (only sequentally, do not run in parallel).
subagent_type: "general-purpose"
description: "Interview for {packName}"
prompt: |
Conduct interview for a single pack and save results.
## Pack Info
- Pack ID: {packId}
- Pack Name: {packName}
- Pack Type: {packType} # "predefined" or "custom"
- Custom Description: {customTopicDescription} # only if custom
## Context Files
- Pack Reference: .claude/skills/steering-specs-generator/pack-reference.md
- Repo Context: {repoContextReportPath}
- Docs & Conventions: {docsConventionsReportPath}
## Output
- Path: {sessionsPath}{sessionId}/{packId}.md
## Instructions
### 1. Read Context
Read pack-reference.md to get:
- Explore prompt template for this pack
- Question themes for this pack
Read repoContextReportPath and docsConventionsReportPath for grounding.
### 2. Topic-Specific Explore (Step 4)
Run Explore agent using pack's template prompt.
For custom packs: generate prompt from customTopicDescription.
### 3. Generate Questions (Step 5)
Question count:
- Predefined: 5
- Custom (narrow): 3-4
- Custom (medium): 5
- Custom (broad): 6-7
Guidelines:
- Ground in Explore findings + existing docs
- Reference actual code: "I see X in Y file..."
- Ask about conventions, not roadmap
- Offer 4 options (A/B/C/D)
- Mark one as "⭐ Recommended" at end of description
Pattern:
Q: I found {finding}. How should {convention question}?
A) {Option} — {rationale}
B) {Option} — {rationale} ⭐ Recommended
C) {Option} — {rationale}
D) {Option} — {rationale}
### 4. Conduct Interview (Step 6)
Present via AskUserQuestion (max 4 per call).
### 5. Classify Responses (Step 6.5)
For each response, classify as:
- CONVENTION: Timeless, future-focused ("When implementing X, do Y")
- ACTION_ITEM: Temporal, fixes current state ("Replace X", "Fix X")
### 6. Save Results
Write to {sessionsPath}{sessionId}/{packId}.md
Session structure:
{sessionsPath}
└── {sessionId}/
├── codebase-topology-ownership.md
├── architecture-design-invariants.md
├── {custom-pack-id}.md
└── ...
Pack file format:
# {Pack Name}
**Pack ID:** {id}
## Explore Findings
{summary of topic-specific exploration}
## Interview
### Q1: {Short question summary}
**Selected:** {Selected option text}
**Notes:** {User's additional context, if any}
**Classification:** CONVENTION | ACTION_ITEM
### Q2: ...
Wait for all pack interview agents to complete. Each writes its results to {sessionsPath}{sessionId}/{packId}.md with classifications already included.
Delegate to general-purpose subagent, choose Opus model:
subagent_type: "general-purpose"
description: "Generate steerings and action items"
prompt: |
Generate steerings AND action items from interview sessions.
Session directory: {sessionsPath}{sessionId}/
(contains one .md file per pack with classifications)
Docs report: {docsConventionsReportPath}
Repo report: {repoContextReportPath}
Template: .claude/skills/steering-specs-generator/steering-template.md
Output paths: {steeringsPath}, {backlogPath}
Instructions:
1. Read all pack files from session directory
2. Extract CONVENTION items → generate steering files
3. Extract ACTION_ITEM items → generate backlog file
4. Generate index.md for steerings
Steering filenames:
| Pack ID | Filename |
|---|---|
| codebase-topology-ownership | code-ownership.md |
| architecture-design-invariants | architecture-invariants.md |
| business-domain-contracts | domain-invariants.md |
| quality-style-assurance | quality-and-style.md |
| testing-verification-strategy | testing-strategy.md |
| risk-historical-landmines | risk-registry.md |
| security-data-compliance | security-and-compliance.md |
| delivery-lifecycle-change-flow | delivery-lifecycle.md |
| {custom-pack-id} | {custom-pack-id}.md |
Rule style:
Action items file: {backlogPath}steering-specs-action-items.md
Severity: 🔴 CRITICAL (data loss, security) → 🟡 HIGH → 🟢 MEDIUM → 🔵 LOW → ⏸️ DEFERRED
Generated steerings:
- {steeringsPath}*.md (N rules, M practices each)
- {steeringsPath}index.md
Action Items: {backlogPath}steering-specs-action-items.md
- 🔴 Critical: N | 🟡 High: N | 🟢 Medium: N
Session: {sessionsPath}{sessionId}/
- {packId-1}.md
- {packId-2}.md
- ...
Transform existing steerings to standard format.
Auto-detect or ask: steerings/, docs/steerings/, .steerings/
subagent_type: "Explore"
prompt: |
Analyze steering files in {steeringsPath}:
- Structure: Intent → Rules → Practices → Meta?
- Rules: numbered, prescriptive, no metadata?
- Code examples: 5-15 lines?
- File size: <200 lines?
Report compliant vs non-compliant files with specific issues.
✅ Compliant: file1.md, file2.md
⚠️ Need transformation:
- file3.md: Missing Intent, verbose rules
- file4.md: Code examples too long
Options: Transform all | Transform specific | Backup and transform | Plan only | Skip
Delegate to general-purpose subagent with transformation guidelines from steering-template.md.
Show changes per file, regenerate index.md.
Activation keywords: steerings, tacit knowledge, interview, conventions, "steerings for X", "continue steerings"
Session continuation: Auto-detects existing sessions in .sessions/, sessions/, docs/sessions/. Offers to resume incomplete sessions, skipping completed packs.
8 Predefined Packs: Topology, Architecture, Domain, Quality, Testing, Risk, Security, Delivery
Output format: Intent (1 sentence) → Rules (numbered) → Practices (heading + explanation) → Meta
Files generated:
{steeringsPath}*.md — Steering files{steeringsPath}index.md — Table of contents{backlogPath}steering-specs-action-items.md — Action items{sessionsPath}{sessionId}/{packId}.md — Interview responses per pack{sessionsPath}explore-*.md — Discovery reportsReference files:
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.