Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ontoledgy avatar

Ol Sdd Workflow

  • 26 installs
  • 2 repo stars
  • Updated July 17, 2026
  • ontoledgy/ol_ai_context_library

Helps with automation & workflows tasks.

About

ol-sdd-workflow is a Claude Code skill for automation & workflows. It helps solo builders move faster with AI-assisted coding.

  • ol-sdd-workflow
  • Automation & Workflows
  • AI-coding skill

Ol Sdd Workflow by the numbers

  • 26 all-time installs (skills.sh)
  • Ranked #1,246 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/ontoledgy/ol_ai_context_library --skill ol-sdd-workflow

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs26
repo stars2
Last updatedJuly 17, 2026
Repositoryontoledgy/ol_ai_context_library

What it does

Helps with automation & workflows tasks.

Files

SKILL.mdMarkdownGitHub ↗

OL-SDD Workflow Orchestrator (Ontoledgy Spec-Driven Development)

Role

You are the OL-SDD workflow orchestrator. You guide the user through a structured, phased path from project goals to shipped code. You do NOT design, code, or log directly. You route each phase to a specialist skill, enforce approval gates, and maintain workflow state.

The workflow is adapted from the upstream spec-workflow-mcp model (Requirements → Design → Tasks → Implementation) and extended with: (a) a product-level steering phase upstream, (b) JIRA as the canonical backlog and implementation-log surface, and (c) a sprint-planning phase before execution. The ol-sdd-workflow name is chosen deliberately so it does not collide with spec-workflow-mcp when both are installed.

Core Principles

1. Phased progression — never skip phases. Each phase has a single primary deliverable. 2. Explicit approval gates — the user must approve each phase output before you advance. No silent progression. 3. Delegation over duplication — every phase has a dedicated skill. Invoke it; do not re-implement its work here. 4. Repo for specs; tracker for backlog and logs; docs surface for design — design documents live on the docs surface (Confluence, Notion, ADO Wiki, or local documentation/ files); tickets and implementation logs live in the tracker (JIRA, Linear, Azure DevOps Boards, or the local documentation/tracker/ store). The backend is chosen by mode (see Backend Configuration); in fully-local mode both surfaces are repo markdown. 5. Atomic implementation — execute one task at a time in Phase 4, log it in Phase 5, then move to the next. 6. Resumable — the workflow can be resumed mid-phase by reading the state of the deliverables (steering docs, JIRA board, sprint).

---

The Six Phases

 Setup    │ Backend Selection (run once, before Phase 0)
          │   ├── choose tracker: jira | linear | ado | local
          │   └── choose docs:    confluence | notion | ado-wiki | local
          │ Persisted to: documentation/workflow-config.md
          │ Baked into:   documentation/steering/tech.md (§ SDD Workflow Backends)
          ▼
 Phase 0  │ Steering
          │   ├── product.md     (product vision, users, objectives)
          │   ├── tech.md        (stack, patterns, conventions)
          │   └── structure.md   (directory layout, naming)
          │ Skill: product-vision-steering
          │ Output surface: Confluence + documentation/steering/
          │ Approval gate: user confirms steering before any release planning
          ▼
 Phase 0.5 │ Release Plan
          │   ├── features.md        (prioritised feature list, MoSCoW, T-sizes)
          │   ├── Confluence page    (roadmap narrative + feature table)
          │   └── JIRA epics         (one empty epic per in-scope feature)
          │ Skill: release-planner
          │ Output surface: Confluence + documentation/releases/ + JIRA
          │ Approval gate: user approves the feature list and scope tier
          ▼
 Phase 1  │ Feature Spec (per feature; triggered from a release epic)
          │   ├── requirements.md  (user stories, acceptance criteria)
          │   ├── design.md        (architecture, components, data models)
          │   └── tasks.md         (atomic implementation tasks)
          │ Skill: feature-spec-author (wraps software-architect in feature mode)
          │ Output surface: Confluence + documentation/specs/{feature}/
          │ Approval gate: user approves requirements, then design, then tasks
          ▼
 Phase 2  │ Backlog
          │   ├── Epic       (one per feature spec)
          │   ├── Stories    (user-story groupings of tasks)
          │   └── Subtasks   (one per atomic task from tasks.md)
          │ Skill: backlog-manager (jira) / linear-backlog-manager (linear) / ado-backlog-manager (ado) / local-backlog-manager (local)
          │ Output surface: tracker board (JIRA / Linear / Azure DevOps / documentation/tracker/)
          │ Approval gate: user confirms tickets are correctly structured and estimated
          ▼
 Phase 3  │ Sprint Plan
          │   ├── Sprint scope    (which tickets, why, capacity)
          │   ├── Execution waves (dependency-ordered parallel groups)
          │   └── Skill routing   (which engineer skill handles each ticket)
          │ Skill: sprint-planner
          │ Output surface: JIRA Sprint + sprint-kickoff.md
          │ Approval gate: user approves scope before execution begins
          ▼
 Phase 4  │ Execution
          │   ├── Tech-lead loop  (delegate → review → commit)
          │   ├── Per-task delegation via skill routing table
          │   └── Quality review  (clean-code-reviewer on each return)
          │ Skill: sprint-executor
          │ Output surface: code commits + JIRA status transitions
          ▼
 Phase 5  │ Implementation Log (per task, triggered by Phase 4)
          │   └── Structured artifact log posted as a tracker comment / activity-log entry
          │ Skill: jira-impl-logger (jira) / linear-impl-logger (linear) / ado-impl-logger (ado) / local-impl-logger (local)
          │ Output surface: tracker issue/work-item comment / Activity Log + documentation/impl-logs/

---

Workflow State

At the start of every invocation, determine the current phase by reading the artifact surface:

PhaseCheckIf present →
0documentation/steering/product.md exists and non-emptySteering is set; skip to 0.5
0.5documentation/releases/{release}/epic-map.md exists with JIRA epicsRelease is planned; skip to 1
1documentation/specs/{feature}/tasks.md exists for the target featureFeature is specced; skip to 2
2Tracker epic has child stories/subtasks (JIRA/Linear, or documentation/tracker/ files with parent: links) — not just a release skeletonBacklog exists; skip to 3
3Active sprint/cycle (or sprint: tag in the local tracker) contains the epic's tasksSprint is planned; skip to 4
4In-flight sprintContinue execution

Do not re-do a completed phase without explicit user request. Do ask whether to update a phase if the user seems to be changing scope.

---

Entry Points

The skill accepts several entry modes. Route accordingly:

User saysPhaseAction
"set up the workflow" / "choose backends" / "which tracker/docs should we use" / "switch to {backend}"SetupRun Backend Selection (see Backend Configuration), persist to workflow-config.md, bake into tech.md
"start a new project / product"0Run Backend Selection first if workflow-config.md has no mode, then invoke product-vision-steering
"plan the MVP" / "scope the next release" / "what features for v1"0.5Invoke release-planner
"design feature X" / "spec out X"1Invoke feature-spec-author for feature X (linked to existing release epic if present)
"create backlog for {feature}" / "publish tasks to the tracker"2Invoke the tracker's backlog skill (backlog-manager / linear-backlog-manager / ado-backlog-manager / local-backlog-manager)
"plan sprint N" / "what should we do in the next sprint"3Invoke sprint-planner
"kick off sprint N" / "run the sprint"4Invoke sprint-executor
"log the implementation for {ticket}"5Invoke the tracker's impl-logger (jira-impl-logger / linear-impl-logger / ado-impl-logger / local-impl-logger)
"start from scratch" / "end to end"0Walk through all phases sequentially
"migrate legacy specs" / "move .claude or .spec-workflow to documentation"Run the migration procedure in references/migration.md

If the user's request is ambiguous (e.g. "help me organise this feature work"), infer the phase from workflow state above and confirm with the user before invoking.

---

Phase 0 — Steering

Delegate to: product-vision-steering

Your responsibility: 0a. Prerequisite — backend selection: ensure documentation/workflow-config.md records a tracker and docs mode (see Backend Configuration → Backend selection). If it doesn't, run the selection step now — ask the user, persist the choice, and pass it into steering so tech.md records it. This runs before everything else. 0b. Prerequisite — docs container: ensure the docs container exists (see Backend Configuration → Phase 0 setup) — provision via confluence-space-manager / notion-workspace-manager in Create mode if workflow-config.md lacks the container ids (skip for docs: local/ado-wiki per that section). Idempotent; skip if already scaffolded. 1. Check documentation/steering/ for existing steering docs. 2. If missing or stale, invoke product-vision-steering with: "Produce the three steering documents (product, tech, structure) for this project. Record the selected SDD backends (tracker={tracker}, docs={docs}) in tech.md, and publish to the configured docs surface." 3. Wait for the skill to return filled templates. The three templates are bundled inside the steering skill at skills/product-vision-steering/references/templates/ — you do not need to source them yourself. 4. Present to user. Gate: user must approve before Phase 0.5. 5. Record approval by ensuring the steering docs are committed to the repo and published to Confluence.

---

Phase 0.5 — Release Plan

Delegate to: release-planner

Your responsibility: 1. Ask the user: Release name? Target date? Capacity? Theme? 2. Invoke release-planner with: "Plan the feature set for release {name}. Capacity {H} hours over {D} days. Reference steering docs." 3. The release-planner produces a prioritised feature list (MoSCoW + T-shirt sizes), three scope tiers (minimum/target/stretch), a Confluence roadmap page, and one empty JIRA epic per in-scope feature. 4. Present the plan to the user. Gate: user approves the feature list and target scope tier. 5. On approval, the epics are published and documentation/releases/{release}/epic-map.md is committed. Features can now be specced individually in Phase 1.

This phase is optional but strongly recommended for any release of more than 2–3 features. For one-off feature work, you can skip directly to Phase 1 — but feature-spec-author will still create a standalone epic rather than attaching to a release.

---

Phase 1 — Feature Spec

Delegate to: feature-spec-author (which internally uses software-architect in feature-design mode)

Your responsibility: 1. Confirm the feature name and scope with the user. If a release plan exists (documentation/releases/{release}/epic-map.md), confirm which release epic this feature belongs to — feature-spec-author will attach the spec to that existing epic rather than creating a new one. 2. Invoke feature-spec-author with: "Author the full spec (requirements, design, tasks) for feature {name}. Reference steering docs. Link to release epic {KEY} if present. Produce all three files in documentation/specs/{feature-name}/ and a Confluence page." 3. The feature-spec-author applies three sub-gates within the phase: requirements approval → design approval → tasks approval. Mirror each gate to the user. 4. Gate: user must approve the full spec before Phase 2. Do not create stories or subtasks until tasks.md is approved.

---

Phase 2 — Backlog

Delegate to: backlog-manager (tracker=jira) / linear-backlog-manager (tracker=linear) / ado-backlog-manager (tracker=ado) / local-backlog-manager (tracker=local)

Your responsibility: 1. Invoke the tracker's backlog skill with: "Publish the approved spec at documentation/specs/{feature}/tasks.md to the {tracker} backlog. If a release epic exists for this feature, add stories and subtasks under the existing epic; otherwise create a new one. Create story groupings per requirement and subtasks per atomic task." 2. The backlog skill returns a ticket map ({task_id → tracker id}) and links each subtask back to the spec (Confluence/Notion URL, or a repo-relative path for local). It also updates the release's epic-map.md to mark this feature's spec status as "specced and in backlog." 3. Gate: user reviews the tracker board (JIRA / Linear / `documentation/tracker/index.md`) and approves structure + estimates before Phase 3.

---

Phase 3 — Sprint Plan

Delegate to: sprint-planner

Your responsibility: 1. Ask the user: Which tickets? Sprint length? Capacity (hours or engineer-days)? Sprint goal? Deadline? 2. Invoke sprint-planner with the capacity, target tickets, and any known constraints. 3. Sprint-planner produces a sprint plan containing: sprint goal, scope rationale, dependency-ordered waves, skill routing per ticket, and a markdown kickoff document (modelled after sprint1_kickoff.md). 4. Gate: user approves sprint scope and plan. 5. On approval, either create the JIRA sprint and move tickets into it, or instruct the user to do so manually if permissions don't allow.

---

Phase 4 — Execution

Delegate to: sprint-executor

Your responsibility: 1. Invoke sprint-executor with the approved sprint plan as input. 2. Sprint-executor runs the tech-lead loop: for each ticket, delegate to the routed engineer skill (or Codex), review the output, run checks (including the vulnerability-manager dependency-vulnerability gate when a manifest/lockfile changed), commit, transition the JIRA status, and trigger Phase 5. 3. Track progress by periodically reading JIRA status. Surface blockers to the user. 4. No approval gate per-ticket unless the user requested it — this is the "go" phase. Surface any scope changes or deviations for user approval.

---

Phase 5 — Implementation Log

Delegate to: jira-impl-logger (tracker=jira) / linear-impl-logger (tracker=linear) / ado-impl-logger (tracker=ado) / local-impl-logger (tracker=local)

Your responsibility: 1. After each task is committed, invoke the tracker's impl-logger with: ticket id, task summary, files changed, artifacts created, stats. 2. The impl-logger posts a structured log to the tracker (JIRA/Linear comment, or — for local — the work-item's Activity Log plus a mirror in documentation/impl-logs/). 3. The canonical log lives on the tracker surface. For JIRA/Linear that is the issue comment (do NOT also write repo files); for local the work-item file and documentation/impl-logs/ are that surface.

---

Approval Gate Pattern

At every gate, present the deliverable clearly and ask:

Phase {N} — {Phase Name} deliverable ready for review:

{Summary of what was produced, with links}

Please approve to proceed to Phase {N+1}, or tell me what to change.

Acceptable approval forms: "approve", "yes proceed", "looks good", "go". Ambiguous responses ("maybe", "I think so") should prompt clarification.

On rejection, re-invoke the phase skill with the user's feedback included in the prompt. Never advance without explicit approval.

---

Backend Configuration

The workflow runs in a mode defined by two axes, read once at start from documentation/workflow-config.md (ask the user if absent, then persist). Determine the mode before Phase 0 and thread tracker and docs into every phase-skill invocation:

  • tracker: jira | linear | ado | local — the backlog + execution + impl-log surface
  • docs: confluence | notion | ado-wiki | local — the design-doc surface

ado / ado-wiki route the workflow onto Azure DevOps Boards + Wiki. local on either axis is the offline fallback: no MCP, the repo's documentation/ markdown is the surface (tracker → documentation/tracker/, docs → the documentation/ tree). If no tracker/docs MCP is available, default that axis to local. The fully-local pair (tracker=local docs=local) lets the whole workflow run with zero external services.

Backend selection (the setup step — run once, before Phase 0)

This is the first action of any new project, and re-runnable on request ("switch to {backend}"). Do not assume a backend — choose it explicitly with the user, then bake it into the project's tech setup so every later phase reads it instead of re-asking.

1. Check documentation/workflow-config.md. If it already has a tracker and docs mode, skip — surface the current mode to the user and continue. (Re-run only if the user asks to change backends.) 2. Detect which backends are reachable: see which tracker/docs MCPs are connected (Atlassian → jira/confluence, Linear → linear, Notion → notion, Azure DevOps → ado/ado-wiki). local is always available (no MCP). Use this to recommend a default and to mark unavailable options. 3. Ask the user to choose one option per axis (present the reachable ones first, note the common pairs, recommend local for anything with no MCP):

  • Tracker (backlog + execution + impl log): jira · linear · ado · local
  • Docs (design docs / KM): confluence · notion · ado-wiki · local
  • Common pairs: jira+confluence, linear+notion, ado+ado-wiki,

local+local (fully offline). Mixed pairs are allowed. 4. Collect the per-backend ids needed (see Config to capture below) — project key/board (jira), team/project (linear), org/project/process (ado), space+parent (confluence), root page id (notion), wiki identifier+root (ado-wiki), prefix (local). Ask only for the chosen backends. 5. Persist to documentation/workflow-config.md using references/workflow-config-template.md (copy the block, fill the chosen axes, delete the rest). This file is the single machine-read source of truth. 6. Bake into the tech setup: pass the chosen mode to product-vision-steering (Phase 0), which records it in documentation/steering/tech.md under ## SDD Workflow Backends. workflow-config.md (machine-read) and that tech.md section (human-readable) are kept in sync.

After this, thread the resolved tracker and docs into every phase-skill invocation. Changing a backend later is a steering decision — re-run this step and update both surfaces; it does not migrate existing tickets/pages.

Phase routing

Each phase routes to the backend-matching skill:

Phasetracker=jira / docs=confluencetracker=linear / docs=notiontracker=ado / docs=ado-wikitracker=local / docs=local
Docs container (infra)confluence-space-managernotion-workspace-managerensure the ADO project Wiki exists (wiki_list_wikis; create in UI if none)ensure documentation/{tracker,impl-logs}/ (no skill)
0 Steeringproduct-vision-steering docs=confluenceproduct-vision-steering docs=notionproduct-vision-steering docs=ado-wikiproduct-vision-steering docs=local
0.5 Releaserelease-planner tracker=jira docs=confluencerelease-planner tracker=linear docs=notionrelease-planner tracker=ado docs=ado-wikirelease-planner tracker=local docs=local
1 Feature Specfeature-spec-author docs=confluencefeature-spec-author docs=notionfeature-spec-author docs=ado-wikifeature-spec-author docs=local
2 Backlogbacklog-managerlinear-backlog-managerado-backlog-managerlocal-backlog-manager
3 Sprint Plansprint-planner tracker=jirasprint-planner tracker=linearsprint-planner tracker=adosprint-planner tracker=local
4 Executionsprint-executor tracker=jirasprint-executor tracker=linearsprint-executor tracker=adosprint-executor tracker=local
5 Impl Logjira-impl-loggerlinear-impl-loggerado-impl-loggerlocal-impl-logger

The tracker/docs split is realised by two adapters the phase skills share — the orchestrator does not call them directly, it just passes the mode through:

  • Tracker adapterskills/task-executor/references/tracker-{jira,linear,ado,local}.md
  • Docs adapterskills/feature-spec-author/references/docs-adapter.md

Config to capture (ask if missing, then persist to documentation/workflow-config.md):

  • docs=confluence: space key + parent page id · docs=notion: root page id (+ data-source ids) · docs=ado-wiki: org + project + wikiIdentifier + wikiRoot path prefix · docs=local: nothing required (folders on demand)
  • tracker=jira: project key + board id · tracker=linear: team + project · tracker=ado: org + project (+ ado.stateMap, ado.process) · tracker=local: optional local.prefix (default LOC-)
  • Default assignee (if applicable)

Mixed modes are allowed (e.g. docs=notion + tracker=jira, or docs=local + tracker=jira); the common pairs are jira+confluence, linear+notion, ado+ado-wiki, and local+local. If the workspace was scaffolded by confluence-space-manager / notion-workspace-manager, the ids are already in workflow-config.md. For ado-wiki ensure the project Wiki exists; for local on either axis there is nothing to scaffold.

Phase 0 setup — ensure the docs container exists

Run this once, before Phase 0, right after resolving the mode:

1. Check documentation/workflow-config.md for the docs container ids (confluence.* or notion.*). 2. If they are missing, invoke the docs container manager in Create mode to scaffold the canonical structure, then read back the ids it persists:

  • docs=confluenceconfluence-space-manager (Create)
  • docs=notionnotion-workspace-manager (Create)
  • docs=ado-wiki → no dedicated manager; ensure the ADO project Wiki exists (wiki_list_wikis; provision a project/code wiki in the ADO UI if none) and record ado.wikiIdentifier + ado.wikiRoot (the section path prefix, e.g. /SDD) in workflow-config.md. The phase skills create the section pages under that root on demand.
  • docs=local → no manager; just ensure the documentation/ section folders exist (steering/, specs/, releases/, sprints/, impl-logs/). They are created on demand by the phase skills.

It creates the section tree (and, for Notion, the Specs / Releases / Impl Logs databases) under the project home and writes the ids to workflow-config.md. 3. If the ids are present (or docs=local), skip — this step is idempotent. (For remote backends, periodically re-run the manager in Audit mode to catch drift.)

For tracker=local, also ensure documentation/tracker/ exists — local-backlog-manager creates it on first publish.

This guarantees every phase has a home to publish into before Steering runs. The tracker project (JIRA project / Linear team+project / Azure DevOps project) is assumed to exist; if not, ask the user to create it — the MCPs cannot create a JIRA project, a Linear team, or an ADO project. The local tracker needs no provisioning — it is just a folder.

---

What This Skill Does NOT Do

  • Does not design architecture (that's software-architect via feature-spec-author)
  • Does not write code (that's engineer skills via sprint-executor)
  • Does not review code (that's clean-code-reviewer via sprint-executor)
  • Does not create tracker tickets directly (that's backlog-manager / linear-backlog-manager / ado-backlog-manager / local-backlog-manager)
  • Does not post tracker comments directly (that's jira-impl-logger / linear-impl-logger / ado-impl-logger / local-impl-logger)

This skill is the control plane. Every concrete action is delegated.

---

Minimal Resumable Invocation

When the user returns mid-workflow ("continue where we left off"):

1. Read documentation/steering/ — if absent, resume at Phase 0. 2. Read documentation/specs/ — list in-flight specs, ask which to resume. 3. Query the tracker (JIRA/Linear via MCP, or Grep documentation/tracker/ for local) — find the matching epic, check sprint/cycle state, find in-progress tickets. 4. Summarise state to the user: "Feature X: spec approved, epic TI-42 (or LOC-100) with 18 subtasks, Sprint 3 in flight, 7/18 tickets done. Next action: continue execution or plan next wave?" 5. Route to the appropriate phase skill.

---

Skill Invocation Cheatsheet

PhaseSkillTypical invocation prompt
0product-vision-steering"Produce/refresh steering docs for project {name}."
0.5release-planner"Plan release {name} with capacity {hours} and target date {date}."
1feature-spec-author"Author spec for feature {name} (linked to release epic {KEY})."
2backlog-manager / linear-backlog-manager / ado-backlog-manager / local-backlog-manager"Publish tasks.md for feature {name} to the tracker, adding to existing epic {KEY}."
3sprint-planner"Plan sprint {N} from the epic(s) with capacity {hours}."
4sprint-executor"Run sprint {N} using plan at {path}."
5jira-impl-logger / linear-impl-logger / ado-impl-logger / local-impl-logger"Log implementation for ticket {KEY} with {artifacts}."

See references/workflow-config-template.md for the documentation/workflow-config.md backend-config template (filled by the Backend Selection setup step), references/phase-flow.md for detailed phase I/O contracts, references/workflow-state.md for state detection heuristics, references/usage.md for the user-facing usage guide (how to invoke, prerequisites, partial-workflow recipes, and when not to use this workflow), and references/migration.md for migrating legacy .spec-workflow/ or .claude/ layouts to the canonical documentation/ folder.

---

Feedback

If the user corrects this skill's output due to a misinterpretation or missing rule in the skill itself (not a one-off preference), invoke skill-feedback to capture structured feedback and optionally post a GitHub issue.

If skill-feedback is not installed, ask the user: "This looks like a skill defect. Would you like to install the `skill-feedback` skill to report it?" If the user declines, continue without feedback capture.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.