steering-specs-generator
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.
What this skill does
# Steering Specs Generator
Conducts 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](flow-diagram.md) for visual representation.
## Prerequisites
- [pack-reference.md](pack-reference.md) — Topic areas and questions
- [steering-template.md](steering-template.md) — Output format
- Access to an "ask user" tool and a "run subagent task" tool
## Tooling Compatibility (Claude Code ↔ Codex CLI)
This skill was originally authored for **Claude Code** tool names (e.g. `AskUserQuestion`, `Task`). To keep it portable, treat these as *capabilities* and map them to your runtime:
- **Ask user (blocking input)**
- Claude Code: `AskUserQuestion`
- Codex CLI: `request_user_input`
- If choice options aren't supported by your tool, present choices in text and ask for an index/label.
- **Run subagents / parallel work**
- Claude Code: `Task` (+ its output/wait mechanism)
- Codex CLI: `spawn_agent` + `wait` (+ optionally `send_input` to clarify) + `close_agent` when done
- **Repo scanning / file IO**
- Claude Code: `Read` / `Write` / `Glob`
- Codex CLI: `exec_command` for search/listing, `apply_patch` for edits (or your runtime’s native file tools)
In the rest of this doc:
- `ASK_USER(...)` means "use your environment’s ask-user tool".
- "Task agent" means "spawn a subagent and wait for its output".
## Mode Selection
| 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) |
---
## Interview Flow
### Step 0: Check for Existing Sessions
Before configuring paths, check if sessions already exist in the repo:
1. **Scan common session directories:**
- `.sessions/`
- `sessions/`
- `docs/sessions/`
2. **If sessions found**, present `ASK_USER(...)`:
```yaml
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"
```
3. **If continuing existing session:**
- Set `sessionsPath` to parent directory of found session
- Set `sessionId` to selected session name
- Scan `{sessionsPath}{sessionId}/` for completed pack files
- **Completed pack detection:** A pack is complete if:
- File `{packId}.md` exists AND
- Contains `## Interview` section with at least one `### Q` entry
- Store `completedPacks[]` list (pack IDs to skip)
- Read `explore-docs-conventions.md` and `explore-repo-context.md` paths if they exist
- Skip to Step 3 (Pack Interview Loop), filtering out completed packs
4. **If starting new or no sessions found** → Continue to Step 0a
### Step 0a: Configure Output Paths
Ask user to confirm paths using `ASK_USER(...)`:
```yaml
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/`
### Step 0b: Generate `sessionId` - short words id
### Step 1: Define Topics
**Custom topic detected** (patterns: "steerings for X", "document X conventions"):
- If clear → Generate `packId`, `packName`, `packType: "custom"`, `customTopicDescription`
- If broad → Clarify with `ASK_USER(...)` (aspects, level, scope)
**No custom topic** → Present 8 predefined packs as multi-select:
### Step 1a: Choose Interview Mode
Ask user to select interview mode using `ASK_USER(...)`:
```yaml
questions:
- question: "Interview mode preference?"
header: "Mode"
options:
- label: "Interactive (default)"
description: "Answer questions one-by-one with discussion"
- label: "Fast mode"
description: "Answer all questions at once, faster execution"
```
**Store:** `interviewMode` ("interactive" or "fast")
| 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` |
### Step 2: Discovery (Parallel Explore)
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`
### Step 3: Pack Interview Loop
**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(', ')}
```
**When running packs in parallel:**
- Launch all pack agents as background tasks
- Capture all task IDs
- Wait for all to complete (Claude: Task output/wait; Codex: `wait`)
- Display progress as packs finish
Spawn a **Task agent per pack** - run all in parallel for faster execution.
Claude Code: use `run_in_background: true` for each `Task` call, then wait for all to complete.
Codex CLI: `spawn_agent` for each pack, capture agent IDs, then `wait` for completion (optionally streaming progress as each finishes).
```yaml
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: 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 question themes for this pack.
Read repoContextReportPath and docsConventionsReportPath for grounding.
These reports contain ALL necessary findings - do NOT run additional explores.
### 2. Generate Questions
Question count:
- Predefined: 5
- Custom (narrow): 3-4
- Custom (medium): 5
- Custom (broad): 6-7
Guidelines:
- Ground ONLY in the provided explore reports + existing docs
- Reference actual code: "I see X in Y file..." (from reports)
- Ask about conventions, not roadmap
- Offer 4 options (A/B/C/D)
- Mark one as "⭐ Recommended" Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.