Skip to content
Back to skills

Spec Init

ASecurity

Unified skill that guides spec creation through structured, interactive process.

  • 40 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
developmentjavascriptgojavatestingdebuggingperformancedocumentation

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add oimiragieo/agent-studio --skill spec-init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spec Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Spec Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oimiragieo-spec-init/badge)](https://www.skillsdirectory.com/skills/oimiragieo-spec-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: spec-init
description: Unified skill that guides spec creation through structured, interactive process.
version: 1.0.0
model: sonnet
invoked_by: user
user_invocable: true
tools: [Read, Write, Edit]
---

# SKILL: spec-init

## Overview

Unified skill that guides spec creation through structured, interactive process.

Wraps these existing skills:

- progressive-disclosure (requirements gathering)
- spec-validator (schema validation)
- plan-generator (plan from spec)

## Workflow

### 1. Type Detection

Question: "What are you building?"

Auto-detect from description:

- Feature: "Build X functionality" → `type: feature`
- Bug: "Fix X issue" → `type: bug`
- Chore: "Update X component" → `type: chore`
- Refactor: "Reorganize X" → `type: refactor`
- Docs: "Document X" → `type: docs`

### 2. Progressive Disclosure v2 (Adaptive, 5-7 questions)

Invoke progressive-disclosure with adaptive algorithm:

```javascript
const { AdaptiveQuestioner } = require('.claude/lib/utils/adaptive-discloser.cjs');
const { ContextAccumulator } = require('.claude/lib/utils/context-accumulator.cjs');

// Determine domain from detected type
const domainMap = {
  feature: 'general',
  bug: 'debugging',
  chore: 'general',
  refactor: 'architecture',
  docs: 'documentation',
};
const domain = domainMap[detectedType] || 'general';

const aq = new AdaptiveQuestioner(domain);
const ca = new ContextAccumulator();

let history = [];
let questionCount = 0;

while (questionCount < 7) {
  const context = ca.getContext();
  const result = await aq.getNextQuestion(context, history);

  // Check if we should stop early
  const readiness = await aq.detectOptimalStop(history, context);
  if (readiness.shouldStop) {
    break;
  }

  // Ask the question
  const answer = await AskUserQuestion({ question: result.question });

  // Store answer with metadata
  ca.addAnswer(result.question, answer, { domain, priority: 'HIGH' });
  history.push({ question: result.question, answer });

  questionCount++;
}

// Summary from accumulated context
const summary = ca.buildSummary();
```

**Key Improvements over v1:**

- Adaptive questioning (skips redundant questions)
- Context-aware (learns from answers)
- Memory-integrated (leverages learnings.md)
- Optimal stopping (5-7 questions typical, down from 10-12)
- Quality scoring (detects when ready for spec generation)

### 3. Spec Template Generation

Auto-populate spec from answers:

```markdown
# SPEC: [Feature Name]

## 1. Overview

**Title**: [From question 1]
**Type**: [Detected type]
**Objective**: [User summary]

**User Story**: As a [user type], I want [capability], so that [benefit]

**Acceptance Criteria**: [From question 5]

## 2. Problem Statement

- **Current State**: [From question 1 answers]
- **Pain Points**: [Extracted from answers]
- **Impact**: [Quantified if possible]

## 3. Proposed Solution

- **Approach**: [From user input]
- **Key Features**: [From answers]
- **Scope**: [What's in/out]

## 4. Implementation Approach

- **Phase 1**: [Design/spike if needed]
- **Phase 2**: [Core implementation]
- **Phase 3**: [Testing]
- **Phase 4**: [Documentation]

## 5. Success Metrics

- **Quantitative**: [From question 3]
- **Qualitative**: [User satisfaction]
- **Timeline**: [From question 4]

## 6. Effort Estimate

- **Design**: 1 day
- **Implementation**: 3 days
- **Testing**: 2 days
- **Documentation**: 1 day
- **Total**: 7 days

## 7. Dependencies

- **Required**: [Extracted from context]
- **Blocking**: [What must complete first]
- **Risk**: [Key risks identified]

## 8. Acceptance Criteria Checklist

- [ ] Feature implemented per spec
- [ ] All tests passing
- [ ] Documentation updated
- [ ] No breaking changes
- [ ] Performance targets met
```

### 4. Validation

Validate spec against schema:

- Invoke spec-validator skill
- Check: all required sections present
- Check: at least 3 acceptance criteria
- Check: effort estimate in days

### 5. Plan Suggestion

After spec approved:

- Suggest: "Ready for planner to create plan?"
- If yes: Show `Skill({ skill: "plan-generator", args: { specPath: "..." } })`
- If no: Allow editing spec

### 6. Storage

Save spec to:

```
.claude/context/artifacts/specs/[feature-name]-spec-YYYYMMDD.md
```

Track metadata:

- trackId: auto-generated
- type: detected
- status: "new"
- created_at: timestamp

## Usage Examples

### Example 1: Quick Feature

```
User: "I want to add dark mode to the UI"

spec-init workflow:
1. Detect: type = "feature"
2. Ask: 5 questions about dark mode
3. User answers in <5 minutes
4. Generate spec
5. Validate against schema
6. Store and offer plan generation
```

### Example 2: Bug Fix

```
User: "There's a memory leak in the scheduler"

spec-init workflow:
1. Detect: type = "bug"
2. Ask: 5 questions (reproduce steps, impact, etc)
3. Generate bug fix spec
4. Suggest acceptance criteria
5. Ready for planner
```

## Output

- Generated spec markdown (saved)
- Track metadata JSON
- Plan generation suggestion
- Next steps guidance

## Integration Points

- progressive-disclosure (requirements gathering)
- spec-validator (schema validation)
- plan-generator (next step)
- track-metadata schema (metadata)

## Memory Protocol (MANDATORY)

**Before starting:**
Read `.claude/context/memory/learnings.md`

**After completing:**

- New pattern -> `.claude/context/memory/learnings.md`
- Issue found -> `.claude/context/memory/issues.md`
- Decision made -> `.claude/context/memory/decisions.md`

> ASSUME INTERRUPTION: If it's not in memory, it didn't happen.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…