accelint-onboard-openspec
Interactively onboard a project to OpenSpec by running a structured interview and generating a complete QRSPI-configured openspec/config.yaml. Use this skill whenever a user mentions "openspec config", "config.yaml for openspec", "set up openspec", "onboard to openspec", "generate openspec config", "QRSPI config", or asks how to configure OpenSpec for their project — even if they just say "help me set up openspec" or "I want to use openspec". Always prefer this skill over ad-hoc config generation.
What this skill does
# Onboard OpenSpec
Guide the user through a conversational interview to produce a complete,
project-specific `openspec/config.yaml` configured for the QRSPI methodology.
## NEVER Do When Onboarding OpenSpec
- **NEVER run codebase inference serially when subagents are available** — Phase 3 spawns parallel subagents for different discovery domains. Serial scanning wastes time on codebases with many config files spread across directories. Spawn all 4 discovery agents simultaneously.
## Companion Skill
This skill produces the **project DNA layer** of the agent instruction stack:
structural facts about what the project is. It is the companion to the
`accelint-onboard-agents` skill, which produces the **behavior layer** (`AGENTS.md` /
`CLAUDE.md`): how the agent acts, communicates, and makes decisions.
If during this interview the user volunteers behavioral content (commit
conventions, workflow steps, decision heuristics, tool preferences), acknowledge
it and redirect: *"That's behavioral — it belongs in AGENTS.md. I'll note it
here for reference, but the `accelint-onboard-agents` skill is the right place to
capture it."* Do not write behavioral content into `config.yaml`.
```
AGENTS.md / CLAUDE.md → accelint-onboard-agents skill → HOW the agent behaves
openspec/config.yaml → this skill → WHAT the project is
```
---
## Mental Model
The config has two jobs:
1. **`context:`** — Objective facts about the codebase injected into every AI
artifact. Think of it as the "DNA" that makes AI suggestions feel native to
the project. Facts only, no opinions.
2. **`rules:`** — Per-artifact checkpoints (proposal / design / tasks / spec)
that encode the team's quality bar.
## Phases
### Phase 0 — File State Detection
Before any interview question is asked, check whether `openspec/config.yaml`
exists and assess its state. Never silently pick a mode — always announce the
detected mode to the user and confirm before proceeding.
**Step 1 — Check for Related Documents**
Before detecting config.yaml state, check for related onboarding documents:
1. **Check for ARCHITECTURE.md**
- If exists: Read it to understand deployment and infrastructure
- Use it to pre-fill answers for Turn 2 (infrastructure/deployment questions)
- Note its existence for the "Related Documentation" section
- Announce: "Found ARCHITECTURE.md — I'll use it to avoid asking questions
about deployment that are already documented."
Note: AGENTS.md and README.md should NOT influence config.yml generation since
they contain behavioral/usage info, not project DNA.
**Step 2 — Detect Config State**
After checking related documents, assess the config file state:
```
Does openspec/config.yaml exist?
│
├── No → MODE 1: Create
│ Full interview from scratch.
│
└── Yes → Read the file, then assess:
│
├── Empty or near-blank (schema: line only, no context/rules)?
│ → MODE 1: Create (with overwrite confirmation)
│ Ask: "config.yaml exists but appears empty — should I
│ populate it from scratch, or preserve any current content?"
│
├── Contains recognised fields?
│ (context: block present, rules: block with known artifact keys)
│ → MODE 3: Refresh
│ Abbreviated interview covering only detected drift and
│ unresolved # TODO: fill in markers.
│
└── Contains real content in an unrecognised shape?
→ MODE 2: Import
Present three options (A / B / C) before proceeding.
```
**Recognised shape** = file is valid YAML with at least a `context:` key
whose value is a non-empty string, or a `rules:` key with at least one
of the known artifact IDs (`proposal`, `specs`, `design`, `tasks`).
---
#### Mode 1: Create
Run the full Phase 1 → Phase 2 → Phase 3 → Phase 4 interview. This is the
happy path for a fresh repo.
---
#### Mode 2: Import
The file has real content that was not generated by this skill. Present the
user with three options before touching anything:
> "This `config.yaml` has existing content with a structure I don't
> recognise. How would you like to proceed?
>
> **(a) Restructure** — I'll import your existing content, map it onto the
> `context:` / `rules:` schema, flag any material that belongs in `AGENTS.md`
> instead (workflow steps, commit conventions, tool preferences), run a
> targeted interview to fill gaps, and produce a merged file ready to replace
> the current one.
>
> **(b) Append** — I'll run the full interview and add the skill's `context:`
> and `rules:` sections alongside your existing content without modifying
> what's already there.
>
> **(c) Dry run** — I'll run the full interview and show you exactly what I
> would have generated, with no changes to the filesystem. Use this to
> evaluate fit before committing."
**If option (a) is chosen:**
1. Read the file in full.
2. Map existing content onto `context:` sub-sections and `rules:` artifact
keys where possible.
3. Flag any content that violates the separation-of-concerns boundary
(e.g., commit conventions, workflow steps, tool preferences, agent
decision heuristics) — these belong in `AGENTS.md`. For each violation,
ask: *"This looks behavioral — it belongs in AGENTS.md. Should I move it
there and remove it from config.yaml?"*
4. Run a targeted interview covering only the gaps (context sub-sections
with no existing coverage; artifact keys with no rules).
5. Show a merged preview before writing. Existing content is labelled
`# from existing file`; new content is labelled `# new`.
**If option (b) is chosen:**
Run the full Phase 1 → Phase 4 interview and write the generated `context:`
and `rules:` blocks alongside existing content. Add a comment at the top:
`# Sections below added by accelint-onboard-openspec skill`.
**If option (c) is chosen:**
Run the full Phase 1 → Phase 4 interview and present the output in the
conversation. Explicitly state: "No files were changed." Offer to re-run
as (a) or (b) if the user is satisfied.
---
#### Mode 3: Refresh
The file matches the skill's expected schema — it was likely produced by a
previous run. Run an abbreviated interview covering only:
1. **Drift detection** — scan the codebase for changes since the file was
last updated:
| Signal | Where to look |
|--------|---------------|
| Runtime / Node version changed | `.nvmrc`, `.node-version`, `Dockerfile` |
| New packages / frameworks added | `package.json` deps, workspace roots |
| TypeScript config tightened | `tsconfig.json` — new `strict*` flags |
| New packages in monorepo | `pnpm-workspace.yaml`, `turbo.json` |
| Build tooling changed | `vite.config.*`, `tsup.config.*` |
| CI/CD workflows added | `.github/workflows/` |
| New domain concepts | New top-level directories, new entity types in source |
| Anti-patterns deprecated | `@deprecated` tags, `// TODO: replace` comments added |
2. **Unresolved TODOs** — find all `# TODO: fill in` markers left from the
previous run and surface them as targeted questions.
3. **Announce findings** before asking anything:
> "I found [N] context sections that may have drifted and [M] unresolved
> TODOs. I'll only ask about those — the rest looks current."
4. After the targeted interview, show only the changed sections in the
preview before writing. Do not re-emit unchanged sections.
---
### Phase 1 — Discovery Interview
Run the interview conversationally. Don't dump all questions at once. Group them
into natural topic turns. If the user mentions a stack, infer related tooling and
confirm rather than asking again.
**Turn 1 — Project Identity**
- What is the project name and its primary purpose?
- Monorepo, single package, or something else? If monorepo, what workspaces?
- Build system / task orchestration? (Turbo, Nx, Make, npm scripts, Makefile…)
- Package manager and any private registrRelated in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".