Skip to content

Commit 6d1dd6f

Browse files
jwaldripclaude
andcommitted
feat(plugin,website): split elaborate into orchestrator + elaborator agent, add changelog page, update docs
Plugin changes: - Create elaborator agent (plugin/agents/elaborator.md) running on Opus with fresh context - Create elaboration-start internal skill with Phases 2-7 (context: fork, agent: ai-dlc:elaborator) - Slim elaborate skill to Phase 0 + pre-compaction orchestrator (1567 -> 267 lines) Website changes: - Add /changelog/ page rendering CHANGELOG.md with color-coded badges and linkable anchors - Rewrite hats.md: expand from "The Four Hats" (4) to "The Hat System" (14 hats across workflows) - Fix workflows.md: correct hat sequences, add Design workflow, add per-unit workflows section - Update all "Four Hats" references across homepage, about, big-picture, start-here, nav, breadcrumbs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ccb38c9 commit 6d1dd6f

File tree

13 files changed

+2332
-1672
lines changed

13 files changed

+2332
-1672
lines changed

plugin/agents/elaborator.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
model: opus
3+
allowedTools:
4+
- Read
5+
- Write
6+
- Glob
7+
- Grep
8+
- Bash
9+
- Agent
10+
- Skill
11+
- WebSearch
12+
- WebFetch
13+
- AskUserQuestion
14+
- ListMcpResourcesTool
15+
- ReadMcpResourceTool
16+
# MCP read-only tool patterns
17+
- "mcp__*__read*"
18+
- "mcp__*__get*"
19+
- "mcp__*__list*"
20+
- "mcp__*__search*"
21+
- "mcp__*__query*"
22+
- "mcp__*__ask*"
23+
- "mcp__*__resolve*"
24+
- "mcp__*__fetch*"
25+
- "mcp__*__lookup*"
26+
- "mcp__*__analyze*"
27+
- "mcp__*__describe*"
28+
- "mcp__*__explain*"
29+
- "mcp__*__memory"
30+
# Ticketing provider write tools (epic/ticket creation during elaboration)
31+
- "mcp__*__create*issue*"
32+
- "mcp__*__create*ticket*"
33+
- "mcp__*__create*epic*"
34+
- "mcp__*__update*issue*"
35+
- "mcp__*__update*ticket*"
36+
- "mcp__*__add*comment*"
37+
disallowedTools:
38+
- Edit
39+
- NotebookEdit
40+
- EnterPlanMode
41+
- ExitPlanMode
42+
- EnterWorktree
43+
- TeamCreate
44+
- TeamDelete
45+
- SendMessage
46+
- TaskCreate
47+
- TaskUpdate
48+
- TaskGet
49+
- TaskList
50+
---
51+
52+
# AI-DLC Elaborator
53+
54+
You are the **AI-DLC Elaborator** — a specialized agent that runs the full elaboration workflow from a pre-compacted brief. You operate with a fresh context window on Opus to maximize the quality of domain discovery and spec writing.
55+
56+
## Your Mission
57+
58+
You receive an **Elaboration Brief** containing:
59+
- The user's intent (what they want to build and why)
60+
- Requirements and constraints gathered from conversation
61+
- Technical context (systems, APIs, codebases)
62+
- Project metadata (root path, cowork status, workspace)
63+
- Any existing context from provider discovery
64+
65+
Your job is to take this brief and execute the full elaboration protocol:
66+
1. **Clarify Requirements** — Ask targeted follow-up questions based on the brief
67+
2. **Create Intent Worktree** — Set up the branch and discovery log
68+
3. **Domain Discovery** — Deep technical exploration using Explore subagents, MCP tools, and web research
69+
4. **Discover Hats & Select Workflow** — Present workflow options
70+
5. **Define Success Criteria** — Collaborate on verifiable criteria
71+
6. **Decompose into Units** — Break work into independent, well-specified units
72+
7. **Write Artifacts** — Produce intent.md, unit files, wireframes, and tickets
73+
8. **Handoff** — Present summary and next steps
74+
75+
## Key Principles
76+
77+
- **Depth over speed**: Elaboration is not a quick phase. Build deep domain understanding.
78+
- **Verify, don't guess**: Use Explore subagents to read real code, query real APIs, and map real schemas.
79+
- **Collaborate**: Use AskUserQuestion to validate your understanding at each major step.
80+
- **Persist findings**: Write to discovery.md as you go — your context window is precious.
81+
- **Specificity**: Every unit must be detailed enough that a builder with zero prior context builds the right thing.
82+
83+
## Subagent Usage
84+
85+
You can and should spawn subagents for parallel research:
86+
- Use `Explore` subagent type for deep codebase and API exploration
87+
- Use `general-purpose` subagent type for design file analysis (needs MCP tool access)
88+
- Launch multiple subagents in parallel for independent research paths
89+
- Summarize findings to the user as subagents return results

plugin/skills/elaborate/SKILL.md

Lines changed: 66 additions & 1494 deletions
Large diffs are not rendered by default.

plugin/skills/elaboration-start/SKILL.md

Lines changed: 1569 additions & 0 deletions
Large diffs are not rendered by default.

website/app/about/page.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,10 @@ export default function AboutPage() {
3838
each phase of development gets proper attention.
3939
</p>
4040

41-
<h2>The Four Hats</h2>
41+
<h2>The Hat System</h2>
4242

43-
<h3>Researcher</h3>
4443
<p>
45-
The Researcher gathers context and understanding before any
46-
implementation begins. This phase involves reading existing code,
47-
understanding requirements, researching patterns, and identifying
48-
constraints. The goal is to build a complete mental model of the
49-
problem space.
44+
AI-DLC organizes work through hats — distinct mindsets that keep each phase of development focused. The default construction workflow uses three core hats, while specialized workflows add hats for security testing, design, TDD, and scientific debugging.
5045
</p>
5146

5247
<h3>Planner</h3>
@@ -73,6 +68,10 @@ export default function AboutPage() {
7368
is ready for production.
7469
</p>
7570

71+
<p>
72+
Beyond the core three, AI-DLC includes specialized hats like Designer for UI/UX work, Red Team and Blue Team for adversarial security testing, and Observer, Hypothesizer, Experimenter, and Analyst for scientific debugging. See the <a href="/docs/hats/">full hat reference</a> for details.
73+
</p>
74+
7675
<h2>Units of Work</h2>
7776
<p>
7877
Work is organized into units. Each unit is a focused piece of

website/app/big-picture/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ export default function BigPicturePage() {
4040
color="blue"
4141
/>
4242
<ExplanationCard
43-
title="The Four Hats"
44-
description="Each hat represents a distinct mindset: Researcher gathers context, Planner designs the approach, Builder executes, and Reviewer validates quality."
43+
title="The Hat System"
44+
description="Each hat represents a distinct mindset. The core workflow uses Planner, Builder, and Reviewer, with specialized hats for security testing, design, debugging, and TDD."
4545
href="/docs/hats/"
4646
color="purple"
4747
/>

website/app/changelog/page.tsx

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import { getChangelog } from "@/lib/changelog"
2+
import type { Metadata } from "next"
3+
4+
export const metadata: Metadata = {
5+
title: "Changelog",
6+
description:
7+
"What's new in AI-DLC — a complete history of features, fixes, and changes.",
8+
openGraph: {
9+
title: "AI-DLC Changelog",
10+
description:
11+
"What's new in AI-DLC — a complete history of features, fixes, and changes.",
12+
},
13+
}
14+
15+
function formatDate(dateString: string): string {
16+
const date = new Date(`${dateString}T00:00:00`)
17+
return date.toLocaleDateString("en-US", {
18+
year: "numeric",
19+
month: "long",
20+
day: "numeric",
21+
})
22+
}
23+
24+
function sectionTypeColor(type: string): string {
25+
switch (type.toLowerCase()) {
26+
case "added":
27+
return "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"
28+
case "fixed":
29+
return "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"
30+
case "changed":
31+
return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"
32+
default:
33+
return "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"
34+
}
35+
}
36+
37+
export default function ChangelogPage() {
38+
const entries = getChangelog()
39+
40+
return (
41+
<div className="mx-auto max-w-3xl px-4 py-8 lg:py-12">
42+
<header className="mb-12">
43+
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl">
44+
Changelog
45+
</h1>
46+
<p className="mt-2 text-lg text-gray-600 dark:text-gray-400">
47+
A complete history of features, fixes, and changes in AI-DLC.
48+
</p>
49+
</header>
50+
51+
{entries.length === 0 ? (
52+
<div className="rounded-lg border border-gray-200 bg-gray-50 p-8 text-center dark:border-gray-800 dark:bg-gray-900">
53+
<p className="text-gray-600 dark:text-gray-400">
54+
No changelog entries yet.
55+
</p>
56+
</div>
57+
) : (
58+
<div className="space-y-12">
59+
{entries.map((entry) => (
60+
<section
61+
key={entry.version}
62+
id={`v${entry.version}`}
63+
className="scroll-mt-24"
64+
>
65+
<div className="mb-4 flex flex-wrap items-baseline gap-3">
66+
<a
67+
href={`#v${entry.version}`}
68+
className="text-2xl font-bold tracking-tight hover:text-blue-600 dark:hover:text-blue-400"
69+
>
70+
v{entry.version}
71+
</a>
72+
<time className="text-sm text-gray-500 dark:text-gray-500">
73+
{formatDate(entry.date)}
74+
</time>
75+
</div>
76+
77+
{entry.sections.length > 0 ? (
78+
<div className="space-y-4">
79+
{entry.sections.map((section) => (
80+
<div key={section.type}>
81+
<span
82+
className={`inline-block rounded-full px-2.5 py-0.5 text-xs font-medium ${sectionTypeColor(section.type)}`}
83+
>
84+
{section.type}
85+
</span>
86+
<ul className="mt-2 space-y-1">
87+
{section.items.map((item, index) => (
88+
<li
89+
key={index}
90+
className="flex gap-2 text-gray-700 dark:text-gray-300"
91+
>
92+
<span className="mt-1.5 h-1.5 w-1.5 flex-shrink-0 rounded-full bg-gray-400 dark:bg-gray-600" />
93+
<span>{item}</span>
94+
</li>
95+
))}
96+
</ul>
97+
</div>
98+
))}
99+
</div>
100+
) : (
101+
<p className="text-sm text-gray-500 dark:text-gray-500">
102+
No notable changes.
103+
</p>
104+
)}
105+
106+
{entry !==
107+
entries[entries.length - 1] && (
108+
<div className="mt-8 border-b border-gray-200 dark:border-gray-800" />
109+
)}
110+
</section>
111+
))}
112+
</div>
113+
)}
114+
</div>
115+
)
116+
}

website/app/components/navigation/Breadcrumbs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const segmentLabels: Record<string, string> = {
2323
"quick-start": "Quick Start",
2424
installation: "Installation",
2525
concepts: "Concepts",
26-
hats: "The Four Hats",
26+
hats: "Hats",
2727
community: "Community",
2828
"example-feature": "Feature Example",
2929
"example-bugfix": "Bugfix Example",

website/app/page.tsx

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,6 @@ import { getAllBlogPosts } from "@/lib/blog"
22
import Link from "next/link"
33

44
const hats = [
5-
{
6-
name: "Researcher",
7-
icon: (
8-
<svg
9-
className="h-8 w-8"
10-
fill="none"
11-
viewBox="0 0 24 24"
12-
stroke="currentColor"
13-
aria-hidden="true"
14-
>
15-
<path
16-
strokeLinecap="round"
17-
strokeLinejoin="round"
18-
strokeWidth={1.5}
19-
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
20-
/>
21-
</svg>
22-
),
23-
description:
24-
"Gather context, understand requirements, and research patterns.",
25-
color: "text-blue-600 dark:text-blue-400",
26-
bgColor: "bg-blue-50 dark:bg-blue-950/50",
27-
borderColor: "border-blue-200 dark:border-blue-900",
28-
},
295
{
306
name: "Planner",
317
icon: (
@@ -456,13 +432,14 @@ export default function Home() {
456432
<section className="bg-gray-50 px-4 py-16 dark:bg-gray-900/50">
457433
<div className="mx-auto max-w-6xl">
458434
<div className="mb-12 text-center">
459-
<h2 className="mb-4 text-3xl font-bold">Four Hats, One Workflow</h2>
435+
<h2 className="mb-4 text-3xl font-bold">Hats Drive Every Phase</h2>
460436
<p className="mx-auto max-w-2xl text-lg text-gray-600 dark:text-gray-400">
461-
AI-DLC uses a hat-based approach to separate concerns. Each hat
462-
represents a distinct mindset and set of responsibilities.
437+
AI-DLC uses a hat-based approach to separate concerns. The default
438+
workflow uses three core hats, with specialized hats available for
439+
security, design, testing, and debugging workflows.
463440
</p>
464441
</div>
465-
<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
442+
<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
466443
{hats.map((hat) => (
467444
<div
468445
key={hat.name}

website/app/start-here/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const steps: Step[] = [
3434
},
3535
{
3636
id: "hats",
37-
label: "Learn about the Four Hats",
37+
label: "Learn about the Hat System",
3838
href: "/docs/hats/",
3939
},
4040
{

0 commit comments

Comments
 (0)