Codex

scaffold-extension

Create a new extension package inside an existing framework's extensions/ directory

104 stars

Best use case

scaffold-extension is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

It is a strong fit for teams already working in Codex.

Create a new extension package inside an existing framework's extensions/ directory

Teams using scaffold-extension should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/scaffold-extension/SKILL.md --create-dirs "https://raw.githubusercontent.com/jmagly/aiwg/main/.agents/skills/scaffold-extension/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/scaffold-extension/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How scaffold-extension Compares

Feature / Agentscaffold-extensionStandard Approach
Platform SupportCodexLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create a new extension package inside an existing framework's extensions/ directory

Which AI agents support this skill?

This skill is designed for Codex.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Scaffold Extension

Create a new extension package inside an existing framework's `extensions/` directory.

## Triggers

Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):

- "I need a new extension" → scaffold extension in specified framework
- "create an extension package" → prompt for name and parent framework
- "add Python support to sdlc-complete" → derive name=`python`, scaffold in sdlc-complete
- "new language extension" → clarify name and framework, scaffold

## Trigger Patterns Reference

| Pattern | Example | Action |
|---------|---------|--------|
| Named scaffold | "scaffold extension python --to sdlc-complete" | Scaffold directly |
| Language extension | "add Go support to sdlc-complete" | Derive name=`go`, confirm |
| Interactive | "scaffold extension --interactive --to sdlc-complete" | Guided design mode |
| Target omitted | "scaffold extension typescript" | Ask which framework |

## Understanding Extensions

Extensions are language- or ecosystem-specific capability packages nested inside a framework. They augment framework agents and rules with toolchain-specific knowledge. Examples:

| Extension | Framework | Provides |
|-----------|-----------|---------|
| `python/` | `sdlc-complete` | Python testing patterns, type hint rules, pip/poetry guidance |
| `javascript/` | `sdlc-complete` | npm/pnpm workflows, ESLint integration, Jest patterns |
| `github/` | `sdlc-complete` | GitHub Actions, PR review workflows, release automation |
| `terraform/` | `sdlc-complete` | IaC patterns, state management, plan review agents |

Extensions differ from addons:
- **Extensions**: Nested within a specific framework, language/ecosystem-scoped
- **Addons**: Standalone, cross-cutting, installed alongside any framework

Extensions cannot contain skills (skills require standalone functionality). They contain agents, rules, and templates scoped to their ecosystem.

## Process

### 1. Parse Arguments

Extract from `$ARGUMENTS`:
- `<name>` — kebab-case extension name (required; often a language or ecosystem name)
- `--to <framework>` — parent framework directory name (required)
- `--description "<text>"` — short description (optional)
- `--interactive` — enable guided design questions

If either `<name>` or `--to` is missing, ask before proceeding.

### 2. Validate Parent Framework

Confirm the parent framework exists:

```bash
ls agentic/code/frameworks/<framework>/
```

Check if an `extensions/` directory exists; if not, it will be created.

Check for name conflicts:

```bash
ls agentic/code/frameworks/<framework>/extensions/ 2>/dev/null
```

### 3. Interactive Design (if --interactive)

Ask before generating:

1. **Ecosystem**: What language, platform, or ecosystem does this extension target?
2. **Capabilities**: What ecosystem-specific capabilities does it add? (linting rules, test patterns, deployment agents)
3. **Agents**: What specialist agents should be scaffolded? (e.g., `python-test-engineer`, `go-module-auditor`)
4. **Rules**: What ecosystem-specific rules should be defined? (e.g., type safety, package management)
5. **Templates**: What ecosystem-specific document templates are needed?

### 4. Run Scaffolding

```bash
aiwg scaffold-extension <name> --to <framework> [--description "..."]
```

### 5. Customize Generated Files

**manifest.json** — The extension's registry entry:

```json
{
  "name": "<name>",
  "version": "1.0.0",
  "description": "<ecosystem-specific capabilities>",
  "parentFramework": "<framework>",
  "agents": [],
  "rules": [],
  "templates": []
}
```

**README.md** — Document the ecosystem targeted, capabilities provided, and activation conditions.

### 6. Add Ecosystem-Specific Components

After scaffold:

```bash
# Add ecosystem-specific agent
aiwg add-agent <name>-specialist --to <framework>/extensions/<name>
# Note: --to path traversal not yet supported; create agent file directly

# Create agent file
# <framework>/extensions/<name>/agents/<role>.md

# Create rules
# <framework>/extensions/<name>/rules/<rule-id>.md

# Create templates
# <framework>/extensions/<name>/templates/<template>-template.md
```

### 7. Register with Parent Framework

Ensure the parent framework's manifest references the extension:

```json
{
  "extensions": ["existing-extension", "<name>"]
}
```

The CLI tool handles this automatically.

## Generated Structure

```
agentic/code/frameworks/<framework>/extensions/<name>/
├── README.md          # Extension documentation
├── manifest.json      # Extension configuration
├── agents/            # Ecosystem-specific agent definitions
├── rules/             # Ecosystem-specific rule files
└── templates/         # Ecosystem-specific document templates
```

Parent framework manifest updated: `agentic/code/frameworks/<framework>/manifest.json`

## Output Format

```
Extension Created: <name>
─────────────────────────
Location: agentic/code/frameworks/<framework>/extensions/<name>/
Parent:    <framework>

Created:
  ✓ README.md
  ✓ manifest.json
  ✓ agents/
  ✓ rules/
  ✓ templates/

Parent manifest updated: <framework>/manifest.json

Next Steps:
  1. Edit README.md with ecosystem description
  2. Add ecosystem agents: create agents/<role>.md
  3. Add ecosystem rules:  create rules/<rule-id>.md
  4. Add templates:        create templates/<name>-template.md
  5. Deploy parent:        aiwg use <framework>
```

## Examples

### Example 1: Language extension

**User**: "scaffold extension python --to sdlc-complete"

**Action**:
```bash
aiwg scaffold-extension python --to sdlc-complete
```

**Result**: `agentic/code/frameworks/sdlc-complete/extensions/python/` created with full structure. Parent manifest updated with `"extensions": ["python"]`.

### Example 2: Platform extension with description

**User**: "create a GitHub Actions extension for sdlc-complete"

**Extraction**: name=`github-actions`, target=`sdlc-complete`

**Action**:
```bash
aiwg scaffold-extension github-actions --to sdlc-complete \
  --description "GitHub Actions workflow generation and PR automation"
```

### Example 3: Interactive extension design

**User**: "scaffold extension --interactive --to sdlc-complete"

**Process**: Guided questions identify ecosystem (e.g., Terraform), capabilities, agents (infrastructure-reviewer, plan-analyzer), and rules (state-management, variable-validation).

## References

- @$AIWG_ROOT/agentic/code/addons/aiwg-utils/skills/devkit-create-extension/SKILL.md — Devkit equivalent (interactive design)
- @$AIWG_ROOT/src/cli/handlers/scaffolding.ts — CLI handler implementation
- @$AIWG_ROOT/docs/cli-reference.md — Full CLI reference
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/extensions/ — Existing extension examples

Related Skills

scaffold-framework

104
from jmagly/aiwg

Create a complete framework package structure inside agentic/code/frameworks/

Codex

scaffold-addon

104
from jmagly/aiwg

Create a complete addon package structure inside agentic/code/addons/

Codex

devkit-create-extension

104
from jmagly/aiwg

Create a new AIWG extension (framework expansion pack) with AI-guided setup

Codex

aiwg-orchestrate

104
from jmagly/aiwg

Route structured artifact work to AIWG workflows via MCP with zero parent context cost

venv-manager

104
from jmagly/aiwg

Create, manage, and validate Python virtual environments. Use for project isolation and dependency management.

pytest-runner

104
from jmagly/aiwg

Execute Python tests with pytest, supporting fixtures, markers, coverage, and parallel execution. Use for Python test automation.

vitest-runner

104
from jmagly/aiwg

Execute JavaScript/TypeScript tests with Vitest, supporting coverage, watch mode, and parallel execution. Use for JS/TS test automation.

eslint-checker

104
from jmagly/aiwg

Run ESLint for JavaScript/TypeScript code quality and style enforcement. Use for static analysis and auto-fixing.

repo-analyzer

104
from jmagly/aiwg

Analyze GitHub repositories for structure, documentation, dependencies, and contribution patterns. Use for codebase understanding and health assessment.

pr-reviewer

104
from jmagly/aiwg

Review GitHub pull requests for code quality, security, and best practices. Use for automated PR feedback and approval workflows.

YouTube Acquisition

104
from jmagly/aiwg

yt-dlp patterns for acquiring content from YouTube and video platforms

Quality Filtering

104
from jmagly/aiwg

Accept/reject logic and quality scoring heuristics for media content