Agent skill

Ak Dev Write Spec

by yaalalabs in yaalalabs/agent-kernel

Write the spec documents for a planned Agent Kernel change under docs/specs/<issue-number-<short-title/ in three ordered stages: a concise point-form design spec (design.md) that a maintainer…

Apache-2.0Auto-check passedAgent Workflows

Install Ak Dev Write Spec

skills CLI
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-write-spec -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yaalalabs/agent-kernel ak-dev-write-spec --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/ak-dev-write-spec .claude/skills/ak-dev-write-spec && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ak-dev-write-spec
GitHub stars
191
Token cost
~7k tokens
SKILL.md length
3,397 words
Files
1
Skills in repo
23
Repo updated
First seen
Licence
Apache-2.0

At a glance

Write the spec documents for a planned Agent Kernel change under docs/specs/<issue-number-<short-title/ in three ordered stages: a concise point-form design spec (design.md) that a maintainer…

  • Works in 3 steps: design.md — the Design Spec → spec.md — the Implementation Spec → plan.md — the Implementation Plan
  • Update a design
  • SKILL.md covers Which Stage Are You In?, Why These Documents Are Held…, Optional: research/ —… and Inputs, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Ak Dev Write Spec is an agent skill from yaalalabs/agent-kernel. Write the spec documents for a planned Agent Kernel change under docs/specs/<issue-number-<short-title/ in three ordered stages: a concise point-form design spec (design.md) that a maintainer reviews first, then a detailed implementation spec (spec.md) once the design is approved, then a concise implementation plan (plan.md), plus an optional research/ subfolder holding the supporting research behind the design. Use this skill when asked to write or update a design, spec, plan, or research notes for a feature…

Its SKILL.md is about 7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Design tokens and Planning. The repository describes itself as: The Operating System for Scalable Enterprise AI Agents - Run, orchestrate, and deploy Compliant Enterprise AI Agents at scale across frameworks, without lock-in, rewrites or… The licence is Apache-2.0.

When your agent uses it

  • Update a design
  • Research notes for a feature
  • Fix before it is implemented

Example prompts

  • “write a design spec for issue 492”
  • “spec out the shared driver extraction”
  • “/ak-dev-write-spec”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. design.md — the Design Spec
  2. spec.md — the Implementation Spec
  3. plan.md — the Implementation Plan

What it can do on your machine

Read from SKILL.md and the folder at commit e03a602. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ak Dev Write Spec loads about 7k tokens when it runs. Until then it costs about 166 tokens; SKILL.md has 3,397 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~166
When it runs · the whole SKILL.md, loaded when a task matches
~7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from yaalalabs/agent-kernel at commit e03a602, republished under its Apache-2.0 licence (© yaalalabs). 3,397 words, ~7,045 tokens.

Download SKILL.mdSave it as .claude/skills/ak-dev-write-spec/SKILL.md (or your agent's skills folder).
name
ak-dev-write-spec
description
Write the spec documents for a planned Agent Kernel change under docs/specs/<issue-number>-<short-title>/ in three ordered stages: a concise point-form design spec (design.md) that a maintainer reviews first, then a detailed implementation spec (spec.md) once the design is approved, then a concise implementation plan (plan.md), plus an optional research/ subfolder holding the supporting research behind the design. Use this skill when asked to write or update a design, spec, plan, or research notes for a feature, refactor, or fix before it is implemented, e.g. "write a design spec for issue #492" or "spec out the shared driver extraction".
license
Apache-2.0
metadata.author
yaalalabs
metadata.category
developer

Write a Spec for a Planned Change

Use this skill when asked to produce spec documents for Agent Kernel work before (or instead of) implementing it. A change is specified in three documents, written in strict order, all under docs/specs/<issue-number>-<short-title>/:

StageFileWhat it isWritten when
1design.mdConcise, point-form, hierarchical requirements — what changes and whyFirst, before anything else
2spec.mdDetailed design and implementation components, following the approved designOnly after design.md has been reviewed and optimized through review cycles
3plan.mdConcise breakdown of the implementation into iterations/stepsOnly after both design.md and spec.md are done

Do not skip ahead. design.md is the document humans review — it must exist and survive its review cycles before effort goes into spec.md. Writing a detailed spec against an unreviewed design wastes the detail work when the design changes.

The same directory may optionally hold a research/ subfolder — the supporting investigation that informed the design (provider surveys, prior-art comparisons, benchmarks, spike notes). It is not a fourth stage and not required; see Optional: research/.

This skill is for writing these documents, not for implementing the change they describe.

Which Stage Are You In?

Route from what the requester asked for and what already exists in docs/specs/<issue-number>-<short-title>/:

  • No design.md yet, or the request is "write a spec/design for X" → Stage 1: write design.md and stop there.
  • design.md exists and the requester says it is reviewed/approved (or asks for the implementation spec) → Stage 2: write spec.md.
  • design.md and spec.md both exist and the requester asks for the plan/breakdown → Stage 3: write plan.md.
  • Asked to update an existing document → update that document; if the update changes requirements in design.md, flag that downstream spec.md/plan.md need re-alignment.
  • Asked to capture or record research — a provider survey, a prior-art comparison, a benchmark, a spike — → write it under research/ (optional; see Optional: research/). This can happen before design.md exists and does not, on its own, start Stage 1.

Never write spec.md in the same pass as a fresh design.md unless the requester explicitly says to skip the design review.

Why These Documents Are Held to a High Bar

The spec set is the contract the implementation PR is reviewed against: ak-dev-review-pr reviews any spec in a PR before reading code, extracts every must/should statement into a requirements checklist, and flags silent omissions and deviations in the implementation. A vague or unverified spec therefore produces noisy reviews and undetectable regressions. Two properties matter most:

  1. Every factual claim about the current code is verified, not remembered. File paths, line numbers, config defaults, "this appears in N places" counts, and behavior descriptions will be re-checked by reviewers against the base branch. One wrong claim taints trust in all the others.
  2. Every requirement is concrete enough to test. "Must retry 3 times with a 2-second delay and re-raise the last error" is checkable; "must handle connection failures robustly" is not.

Optional: research/ — Supporting Research

Some changes need real investigation before the design is credible — a survey of third-party providers, a comparison of prior-art approaches, a benchmark, or a throwaway spike. When that work happened, preserve it under an optional research/ subfolder of the spec directory rather than losing it or inlining it into design.md:

docs/specs/<issue-number>-<short-title>/
├── research/            # optional — supporting material, written before or alongside design.md
│   ├── README.md        # optional index of the research files and their one-line takeaways
│   └── <topic>.md       # one file per topic
├── design.md
├── spec.md
└── plan.md
  • Optional, and not a stage. Skip it entirely for changes that need no investigation. It has no ordering slot of its own — it is written before or alongside design.md, never generated after plan.md to backfill.
  • What goes in it: the raw material behind the design's decisions — provider/tool landscape surveys, prior-art abstraction comparisons, benchmark results, spike findings, decision logs, notes from external sources. One file per topic; a short research/README.md indexing them (with each file's one-line takeaway and status) helps but is not required.
  • design.md distills; research/ backs. The design states the decision and cites the research file where a motivation or a decision leans on a finding (e.g. "per-session is the default — see research/lifecycle-survey.md"). Do not paste long surveys into design.md; that is exactly the padding the point-form format exists to avoid.
  • A different bar. Research is held to the claims-are-true bar (property 1 above) — verified code citations, and external claims marked as verified or not — but not to the point-form / concise / review-cycle bar of design.md. It may be long-form and exploratory, and it is not rewritten every review cycle.
  • Not requirements. ak-dev-review-pr does not extract requirements from research/ and does not hold it to the spec rubric; reviewers may consult it for context. It ships in the design PR as supporting material (see PR Guidance).
  • When research is large or reusable — a landscape survey worth discovering from outside this one change — it may instead live as its own research-companion dev skill under .agents/skills/. Use research/ for change-scoped material; promote to a skill only when the research is a durable reference in its own right.

Inputs

  • GitHub issue (required): the issue number plus a short title, e.g. issue #492 "Database Drivers Refactoring". Determines the output directory docs/specs/<issue-number>-<short-title>/ — the issue number, a hyphen, then a lowercase kebab-case slug of the change (e.g. docs/specs/492-shared-database-drivers/). If no issue exists, ask for one — do not invent a number.
  • Change intent: what the change should accomplish, at whatever level of detail the requester has. Ambiguities you cannot resolve from the code become explicit open questions in design.md, not silent design decisions.

Stage 1: design.md — the Design Spec

design.md is read by an Agent Kernel expert to understand what is changing and why — in minutes, not an afternoon. It goes through multiple manual review cycles, so it is optimized for fast reading and per-point commenting: point form, hierarchical, complete.

Prepare
  1. Load ak-dev-architecture — the design must fit the documented architecture (coupling direction, adapter pattern, config via AKConfig, pluggable interfaces), not re-derive it. Its House Patterns for New Features section is the rubric every design is held to: pluggable by default (ABC + factory + dotted-path BYO, even when one backend ships first), reuse of existing configuration over new knobs (existing config implicitly enables the feature where it applies), and classes over script-style functions. A design that departs from one of them says so in an explicit point with the reason; a silent departure is a review finding. When the change adds a component of a kind covered by an ak-dev-new-* skill (framework adapter, guardrail provider, knowledge base, messaging integration, multimodal storage, tracing provider, sandbox provider, queue transport), load that skill too — its checklist defines what "complete" means for the requirements.
  2. Do a scoped evidence pass: read the code the change touches well enough that every point you write is verified, and record path:line for the claims that motivate the change. The document stays point-form, but the points must still be true.
  3. If a research/ folder exists (or you just did investigation worth keeping), draw the Motivation and decisions from it and cite the relevant files instead of restating their surveys inline. If the investigation is worth preserving but isn't captured yet, write it under research/ first (see Optional: research/).
Format

Point form throughout — bullets, not paragraphs. Break points into sections and keep them hierarchical (a parent point with indented sub-points) so structure carries the meaning. Every point should be atomic enough for a reviewer to comment on it alone.

markdown
# #<issue-number>: <one-line summary of the change>

<2–3 sentence summary: what changes, where, and the one-sentence design idea.>

## Motivation

- <Point-form observations from the code, each with its `path:line` evidence>

## Requirements

### <Area or component>

- <Requirement>
  - <Sub-requirement / constraint / concrete value>
- <Requirement>

### <Next area>

...

## Non-goals

- <What this change deliberately does not do>

## Open questions

- <Decisions the requester/reviewer must make — never silently decided>
  • Pluggability is a requirement, not an afterthought: when the change touches an external system, backend, or provider, the Requirements name the ABC, the factory (built-in short names, require_extra on optional SDKs, the dotted-path bring-your-own branch), and the contract test suite the backends subclass. One backend shipping first is fine; one backend being the only possible one is not.
  • Configuration points are explicit about reuse: a ### Configuration area (or equivalent) states which existing AKConfig models and blocks the feature reuses or subclasses (_QueuesConfig, _ResponseStoreConfig, the _RedisConfig/_DynamoDBConfig/... connection models, presence-enabled blocks such as thread/schedule), whether already-configured components implicitly enable the feature, and every new field with a one-line reason it cannot be derived from existing config. "No new configuration" is a valid and preferred outcome; write it down so reviewers can confirm it. Do not add an enabled flag or a duplicate type selector when existing configuration can stand in for that decision.
  • Components are classes: name the classes the change introduces (ABC, backends, factory, orchestrating manager/handler/runner, Pydantic models) and their single responsibility. A design whose components are module-level functions is redesigned before review, not after.
  • Component diagram: add one simple diagram (Mermaid) only if it genuinely clarifies how components relate. Do not add more diagrams, sequence charts, or decoration — an over-diagrammed design is harder to review, not easier.
  • Complete but concise: every requirement is present; no prose padding, no implementation detail (that belongs in spec.md). If a point needs a paragraph to explain, it is probably an implementation detail — push it down to Stage 2 or split it.
  • Each requirement still concrete enough to test (see the high bar above) — point form is a format constraint, not a precision discount.
Review cycles

Deliver design.md and stop. The requester reviews it (typically over multiple cycles); apply their edits and keep the document in reviewable point form throughout. Only when they confirm the design is settled does Stage 2 begin.


Stage 2: spec.md — the Implementation Spec

spec.md details how the approved design is built: the detailed design and the implementation components. It follows design.md — every requirement there is covered here, and any deviation discovered while detailing goes back through design review rather than being silently absorbed.

Step 1: Load the Standards to Design Against

Load these skills before writing — the spec must fit the documented architecture, not re-derive it:

  1. ak-dev-architecture — always. Design principles, core abstractions, coupling rules, directory structure.
  2. ak-dev-code-quality — always. Conventions the implementation must follow (typing, logging, formatting, commit/PR rules).
  3. ak-dev-testing-conventions — always. Testing requirements must use real patterns (pytest, async, monkeypatching config, existing test files and their patch targets).

Then route from the areas the change touches to the specialized ak-dev-new-* skills, exactly as ak-dev-review-pr Step 2 does. When the change adds a component of one of those kinds, the skill's checklist (factory registration, config section, optional-dependency extra, exports, tests, example) defines what "complete" means.

Step 2: Investigate the Current Code — the Evidence Pass

Before writing a word of detailed design, read the code the change touches and collect evidence:

  • Read every file that will be created, modified, or deleted — fully, not just the region you expect to change.
  • For each claim the spec will make, record path:line at the time of writing. Verify counts by enumerating: if you write "this logic appears in seven places", list the seven places.
  • Check the supporting surfaces that specs routinely get wrong:
    • Config: the actual Pydantic classes in ak-py/src/agentkernel/core/config.py — field names, types, defaults, descriptions, and which sections are Optional (a missing block may raise AttributeError, ValueError, or nothing, depending on the default).
    • Optional dependencies: which extras in ak-py/pyproject.toml cover which imports, and which factory paths actually have try/except ImportError (only some do — verify per path, don't generalize).
    • Factories and wiring: SessionStoreBuilder, AttachmentStorageManager, ResponseStoreFactory, framework/provider factories — what selects the component and what error behavior each has.
    • Existing tests: which test files cover the area and what they monkeypatch — plan.md must name the patch targets that move.
    • Dev skills: grep .agents/skills/ for references to classes/files the change moves or renames; the plan's final step updates them.
  • Note behavior asymmetries between the copies/paths you touch (e.g. one swallows errors where its twin propagates, one checks config where another doesn't). Each asymmetry forces a design decision the spec must make explicitly.
Show full SKILL.md (1,494 more words)Show less
Step 3: Make the Design Decisions

Design within the documented rules, and when the change unifies or refactors existing behavior, decide deliberately:

  • Coupling direction: core never imports from framework/, integration/, deployment/, or api/. Shared code consumed by both core and deployment lives under core/ (e.g. core/util/), and must not read deployment-specific config.
  • Config-driven, explicitly: new knobs go through AKConfig; shared low-level components take explicit constructor parameters and leave config reading to the stores/factories that own a config section.
  • Adapter conventions: wrap, don't abstract over; no feature-forcing; consistent shape with siblings in the same category.
  • Pluggable by default: any touchpoint with an external system, backend, or provider is an ABC plus thin adapters selected by a factory in the core/util/factory.py shape (if/elif real imports for built-ins, require_extra, resolve_dotted for BYO). Core consumes only the ABC; no if/else on backend names outside the factory. Shared lifecycle behavior (retries, health checks, TTLs) lives in one reused component, not per adapter.
  • Config reuse before new fields: for every configuration need, first find the existing AKConfig model that expresses it and reuse it whole (the way sandbox.broker.queue reuses _QueuesConfig) or subclass it to change defaults only. Let already-configured components enable the feature implicitly where that is unambiguous (the session backend providing the WebSocket connection store is the model). Add a field only when nothing existing can be derived from, and record the reason next to the field in the spec.
  • Classes, not scripts: components are classes with one responsibility each and instance-held state; module-level functions are justified individually as small, stateless, shared utilities. When two classes would share logic, the spec names the base class or shared component that holds it.
  • When unifying divergent copies: for each divergence found in Step 2, state which behavior wins and why — these are your Behavioural changes section. A unification that doesn't enumerate its behavior changes is describing a different change than the one that will ship.
Step 4: Write the Spec

Write to docs/specs/<issue-number>-<short-title>/spec.md with this structure (sections may be omitted only when genuinely empty, never to save effort):

markdown
# #<issue-number>: <one-line summary> — Implementation Spec

<Lead paragraph: what changes, where, and the one-sentence design idea.
Reference design.md as the requirements source.>

## Design

### <One subsection per new/changed component>

<Directory layout for new packages. Interface sketches as code blocks —
signatures and one-line comments, not full implementations. For each
pluggable component: the ABC, the factory branch and built-in names, the
dotted-path BYO branch, and the contract test the backends subclass. The
governing rules ("drivers never read AKConfig") stated as numbered rules
with the reasoning. Every component named here is a class; module-level
functions are listed separately with a one-line justification each.>

### Consumer changes

<Per consumer: what is deleted, what changes, what is verified unchanged.>

### Config changes

<Exact class/field changes. Which existing models are reused whole or
subclassed, and which already-configured components implicitly enable the
feature. For every new field: the reason it cannot be derived from existing
config, its default, and its description. State what happens to YAML files
and AK_* env vars written before the change. "No config changes" is a valid
section body when true.>

### Behavioural changes

<Numbered, exhaustive, each marked intentional with its justification.
Follow with explicit **Non-changes**: data layouts, public exports,
signatures that stay fixed.>

## Error handling

<Failure modes and what surfaces where: connection failures, missing config,
missing optional dependencies.>

## Testing

<New test files and what they assert; existing test files with the exact
patch targets/assertions that change; the command to run the suite.>

Trace every design.md requirement into a spec section. If detailing reveals a requirement that can't be met as designed, don't quietly redesign — update design.md, flag it for re-review, then continue.

Step 5: Cover the Details Specs Routinely Omit

Walk this checklist before calling the spec done — these are the gaps reviews find in otherwise-strong specs:

  • Exception scope: any retry/error-handling behavior states which exception types it catches. When existing copies differ (one catches RedisError, another bare Exception), unifying silently changes behavior — pick and document.
  • Concurrency contract: for any component shared across threads (ECS consumer threads, ThreadRunner tasks) or event loops, state the thread-safety expectation. Lazy init and check-then-act reconnects that are fine per-event-loop can race in multi-threaded consumers.
  • Per-operation cost: if the design adds work to every operation (a health-check ping, an extra round trip), name it on the hot paths it lands on and accept or mitigate it explicitly.
  • Naming consistency: within one new package, one concept gets one name. Don't rename a method on one backend and keep the old name on its sibling.
  • Riskiest consumer gets a test: the Testing section must cover the consumer whose code changes shape the most — not only the shiny new component. If that consumer has no existing test file, the plan adds one.
  • Absolute claims audited: every "all", "only", "never", "each" claim gets checked against each instance it quantifies over. Where reality is "some", write "some" and name which.
  • Config compatibility: field names, types, and defaults before vs after; effect on existing YAML and env vars; what happens to field descriptions (they surface in generated docs).
  • Config reuse audited: every new AKConfig field was checked against the existing models (grep "class _" ak-py/src/agentkernel/core/config.py); anything that duplicates an existing shape is replaced by reuse or a defaults-only subclass; no enabled/type field was added where already-configured components can enable or select the feature; every surviving field has a named reader in the spec.
  • Pluggability complete: ABC, factory branch(es), require_extra on optional SDKs, dotted-path BYO, and the contract test are all named; the first backend is not hard-wired anywhere in core.
  • Class structure: each component is a class with a single responsibility; each module-level function is listed with its justification; shared logic between classes has a named home (base class or shared component).
  • Data compatibility: whether data written before the change is read back identically after it — state it either way.
Step 6: Self-Review Against the Review Rubric

ak-dev-review-pr Step 3 will judge the spec set on completeness, consistency with the architecture skills, internal consistency, and testability — and will extract every must/should/will statement as a requirement. Pre-empt it:

  1. Extract your own requirements checklist from design.md and spec.md. Every requirement must map to a spec section (and later a plan step); anything that doesn't is either missing or shouldn't be stated as a requirement.
  2. Re-verify each path:line citation and quoted default against the current base branch (they go stale fast on an active repo).
  3. Check for undefined terms, contradictory requirements, and references to components that don't exist.

Stage 3: plan.md — the Implementation Plan

Written only after design.md and spec.md are complete. plan.md breaks the implementation into iterations/steps — it says in what order the spec gets built, not how (that detail already lives in spec.md). Keep it concise, simple, and easily understandable; do not restate spec content.

markdown
# #<issue-number>: <one-line summary> — Implementation Plan

## Iteration 1: <name>

- **Goal:** <what is working at the end of this iteration>
- **Files:** <files created/edited>
- **Steps:** <short numbered steps, referencing spec.md sections>
- **Verify:** <the test command / check that proves the iteration done>

## Iteration 2: ...

## Iteration N-1: Tests

<From spec.md's Testing section: new test files, changed patch targets,
the command to run the suite.>

## Iteration N: Sync docs and skills

<Which `.agents/skills/` files and docs surfaces the change invalidates —
name file and line. State explicitly (and verify) when a surface needs no
update, and confirm with the ak-dev-sync-docs-from-branch /
ak-dev-sync-skills-from-branch flows before merge.>
  • Each iteration should leave the branch in a working, testable state.
  • Every spec.md component appears in exactly one iteration; the tests and docs/skills-sync iterations are never omitted.

PR Guidance

When spec documents ship as their own PR (implementation to follow separately):

  • Use a docs: commit/PR title (e.g. docs: add design spec for #492 shared database drivers) — specs are documentation; a feat: title makes reviewers expect code.
  • In the PR template, mark Documentation update (or Other: design spec) and say explicitly that implementation follows in a separate PR.
  • Testing/checklist items that don't apply to a spec-only PR: state that they don't apply rather than leaving the template untouched.
  • design.md typically ships (and is reviewed) before spec.md and plan.md exist — separate PRs per stage are fine and expected.
  • A research/ folder, when present, ships in the same PR as the design.md it backs (it is that design's evidence) — no separate PR, and it is not held to the spec review bar.

When the spec documents and implementation ship together, the specs go in the first commit so reviewers can read them before the code, and ak-dev-review-pr will check the implementation against them.

Output Expectations

Report back to the requester:

  1. Which stage you completed, the document path(s), and a summary of the key decisions.
  2. Open questions you could not resolve from the code — decisions the requester must make, listed explicitly (these also appear in design.md).
  3. For Stage 2+: behavioural changes the design implies, so nobody discovers them in review.
  4. For Stage 3: which ak-dev-* skills and docs surfaces the implementation will need to update (from the plan's final iteration).
  5. What the next stage is and that it waits on the requester's review of the current one.

Do not start the next stage, and do not start implementing, unless asked.

Common Pitfalls

  • Writing spec.md (or plan.md) before design.md has been reviewed — the review cycles on the design are the point of the staged process.
  • A design.md written in prose paragraphs, or padded with implementation detail — it must be point-form, hierarchical, and fast to read; detail belongs in spec.md.
  • Over-diagramming: more than one diagram, or a diagram that decorates rather than clarifies.
  • Citing file paths, line numbers, or config defaults from memory instead of reading them — reviewers re-verify every claim against the base branch.
  • Describing only the happy path — no error handling, no missing-config behavior, no edge cases.
  • A "Behavioural changes" section that isn't exhaustive — if unifying divergent code, every divergence resolved is a behavior change to list.
  • Writing requirements no test could verify ("handle errors gracefully").
  • Silently deviating from design.md while writing spec.md — deviations go back through design review.
  • A plan.md that restates the spec instead of ordering it, or that omits the tests / docs-and-skills-sync iterations.
  • Making silent design decisions on questions the requester should answer — surface them as open questions in design.md instead.
  • Titling a spec-only PR feat: and leaving the PR template unfilled.
  • Drifting from writing the documents into implementing them.
  • Treating research/ as mandatory (it is optional), backfilling it after plan.md to look thorough, or inlining its surveys into design.md instead of citing them.
  • Designing the first backend as the only backend: a hard-wired implementation with no ABC, no factory branch, and no bring-your-own path, "to be generalized later".
  • Adding a new config block, enabled flag, or type selector without first checking whether an existing AKConfig model already expresses it or an already-configured component can enable the feature implicitly. Every new field needs a stated reason and a named reader.
  • Specifying components as module-level functions or a main()-style wiring function instead of classes with one responsibility each.

© yaalalabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/ak-dev-write-spec of yaalalabs/agent-kernel.

Open the folder on GitHubat commit e03a602

Compare with similar skills

Ak Dev Write Spec next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ak Dev Write Spec compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ak Dev Write Spec this skillyaalalabs/agent-kernel191—~7kAutomated safety check: PassApache-2.0
Task Planningdxos/dxos525—~2.5kAutomated safety check: PassCustom licence
Vibe ImplementidiotLeoLYJ/Daliu-Awesome-Skills140—~2.7kAutomated safety check: PassNone
Plan Previewu-ichi/reviewable-html-workbench2981 repos~1.8kAutomated safety check: PassMIT
CatchupDeL-TaiseiOzaki/claude-code-orchestra199—~1.8kAutomated safety check: PassMIT
OpenSpec Guided OnboardingFission-AI/OpenSpec71k1 repos~4.5kAutomated safety check: PassMIT

Similar skills

  • Task Planning

    dxos/dxos

    A skill your agent uses when work spans multiple steps, phases, or sessions, when resuming a task started earlier, when the user asks for a plan/roadmap/progress tracking, or when they use the…

    525 GitHub stars~2.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Vibe Implement

    idiotLeoLYJ/Daliu-Awesome-Skills

    Vibe Coding 流水线的实现阶段(流水线终点,顺序 idea → interaction → architecture → design → prototype → implement)。当 interaction.md、architecture.md、design.md、prototypes/ 已就绪,用户说"开始实现""写代码""把设计落地""进入开发""implement /…

    140 GitHub stars~2.7k tokensUpdated 29 days ago
    Agent WorkflowsAuto-check passed
  • Plan Preview

    u-ichi/reviewable-html-workbench

    Plan Mode の <proposedplan を出す直前に、計画の段階・依存関係・検証観点を一時HTMLで視覚確認したい時に使う agent-internal skill。Use this agent-internal skill to create a temporary HTML preview for a plan just before presenting…

    298 GitHub starsUsed in 1 repo~1.8k tokens
    Agent WorkflowsAuto-check passed
  • Catchup

    DeL-TaiseiOzaki/claude-code-orchestra

    Comprehensive onboarding for new or returning contributors. An agent skill from DeL-TaiseiOzaki/claude-code-orchestra.

    199 GitHub stars~1.8k tokensUpdated 17 days ago
    Agent WorkflowsAuto-check passed
  • OpenSpec Guided Onboarding

    Fission-AI/OpenSpec

    Walks you through a complete OpenSpec workflow cycle with narration while doing real work in your codebase.

    71k GitHub starsUsed in 1 repo~4.5k tokens
    Agent WorkflowsAuto-check passed
  • Paseo Committee

    getpaseo/paseo

    Forms a two-agent committee with contrasting profiles to analyze a stuck problem in parallel, reconcile their views and return a consensus plan without editing files.

    20k GitHub starsUsed in 1 repo~496 tokens
    Agent WorkflowsAuto-check passed

More from yaalalabs/agent-kernel

All 23 skills in this repo
  • Ak Dev Code Quality

    yaalalabs/agent-kernel

    Code quality standards, formatting, Python style rules (classes over script-style functions, configuration-field rules), commit conventions, and PR workflow for Agent Kernel development.

    191 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Ak Dev New Evaluator Provider

    yaalalabs/agent-kernel

    Step-by-step guide for adding a new built-in test evaluator provider to Agent Kernel (beyond DeepEval, Opik and JEV).

    191 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Ak Dev New Guardrail Provider

    yaalalabs/agent-kernel

    Step-by-step guide for adding a new guardrail provider to Agent Kernel.

    191 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Step-by-step guide for adding a new knowledge base backend to Agent Kernel.

    191 GitHub stars~5.1k tokensUpdated today
    Auto-check passed
  • Ak Dev New Messaging Integration

    yaalalabs/agent-kernel

    Step-by-step guide for adding a new messaging platform integration to Agent Kernel.

    191 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Ak Dev New Multimodal Storage

    yaalalabs/agent-kernel

    Step-by-step guide for adding a new multimodal attachment storage backend to Agent Kernel.

    191 GitHub stars~4.3k tokensUpdated today
    Auto-check passed

Questions about Ak Dev Write Spec

What does Ak Dev Write Spec do?

Write the spec documents for a planned Agent Kernel change under docs/specs/<issue-number-<short-title/ in three ordered stages: a concise point-form design spec (design.md) that a maintainer…. Ak Dev Write Spec is an agent skill from yaalalabs/agent-kernel.md), plus an optional research/ subfolder holding the supporting research behind the design.

When should I use Ak Dev Write Spec?

Ak Dev Write Spec fits situations like: update a design; research notes for a feature; fix before it is implemented.

How do I install Ak Dev Write Spec in Claude Code?

Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-write-spec -a claude-code`. Or copy the skill folder (.agents/skills/ak-dev-write-spec in yaalalabs/agent-kernel) into .claude/skills/ak-dev-write-spec in your project. Claude Code loads it when a task matches its description.

How do I install Ak Dev Write Spec in Codex?

Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-write-spec -a codex`. Or copy the skill folder (.agents/skills/ak-dev-write-spec in yaalalabs/agent-kernel) into .agents/skills/ak-dev-write-spec in your project. Codex loads it when a task matches its description.

Can I use Ak Dev Write Spec in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yaalalabs/agent-kernel --skill ak-dev-write-spec -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ak-dev-write-spec, .gemini/skills/ak-dev-write-spec, .github/skills/ak-dev-write-spec and .opencode/skills/ak-dev-write-spec in your project.

What does Ak Dev Write Spec need to run?

SKILL.md names no scripts, command-line tools or credentials: Ak Dev Write Spec is instructions for the agent only.

Does Ak Dev Write Spec access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ak Dev Write Spec safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ak Dev Write Spec use?

Ak Dev Write Spec is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ak Dev Write Spec use?

About 7k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ak Dev Write Spec?

Skills that share tags, products or a category with Ak Dev Write Spec: Task Planning (dxos/dxos, 525 stars), Vibe Implement (idiotLeoLYJ/Daliu-Awesome-Skills, 140 stars), Plan Preview (u-ichi/reviewable-html-workbench, 298 stars) and Catchup (DeL-TaiseiOzaki/claude-code-orchestra, 199 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ak Dev Write Spec?

yaalalabs (a GitHub organization) maintains it in yaalalabs/agent-kernel, which has 191 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 8, 2026.

Source: yaalalabs/agent-kernel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.