ado-create-work-items
Create Azure DevOps work items from a backlog_input.json (the output of classify-work-items) via the bundled create-backlog.cs script.
Skill by ThodsaphonSonthiphin
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/thodsaphonsonthiphin-ado-create-work-items
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, devops, cloud, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ado-create-work-items
What's inside
- Skill name
ado-create-work-items- Description
- Create Azure DevOps work items from a backlog_input.json (the output of classify-work-items) via the bundled create-backlog.cs script. Always does a dry-run validation first and only creates real items after the user explicitly approves. Use this whenever there is a backlog_input.json or any file of items to file in ADO, or when the user says "create these work items", "file the backlog", "push these to Azure DevOps", "create the tickets/bugs/stories", "make the work items", or asks to turn a classified list of findings into a real ADO backlog. This is the step that actually writes to the org, so prefer it over hand-rolling REST/MCP calls when a backlog_input.json exists. After creating, it writes backlog_result.json for ado-writeback-tracking.
- License
- MIT
- Instructions
- 100 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (4)
- SKILL.md
- data-contracts.md · references/
- create-backlog.cs · scripts/
- setup_check.ps1 · scripts/
SKILL.md (first lines)
# ado-create-work-items
Take a `backlog_input.json` and create the work items in Azure DevOps by driving
the bundled `create-backlog.cs`. The script creates an optional parent
(Feature/Epic), then every item linked under it, and writes a
`backlog_result.json` mapping each `key` to its new `id`/`url`.
Creating items in a live org is outward-facing and effectively un-undoable (delete
is manual, links and notifications already fired). So this skill is built around a
hard gate: **dry-run always, real run only on an explicit "yes".**
For the exact JSON shapes (`backlog_input.json`, `backlog_result.json`, the `key`
field that threads source row → ticket, and the process→types table) see
`references/data-contracts.md`. Don't duplicate schemas here.
## Prerequisites
- **Auth** — sign in once: `az login` (the script fetches an Entra token for the
Azure DevOps resource). Alternatively set `$env:AZDO_PAT` (PAT with Work Items
Read & Write). See the `ado-auth` skill for token/PAT details and tenant.
- **Org/project** — set `$env:AZDO_ORG` / `$env:AZDO_PROJECT`, or include `org` /
`project` in the JSON. Env vars override the JSON.
- **.NET 10 SDK** — `create-backlog.cs` is a .NET 10 file-based program.
- Unsure if prereqs are met? Run the checker:
`powershell -ExecutionPolicy Bypass -File "${CLAUDE_SKILL_DIR}/scripts/setup_check.ps1"`
Confirm the `type` of each item is valid for the target project's **process**
(Agile vs Scrum vs Basic vs CMMI) — see the table in data-contracts.md. A type that
doesn't exist on the board is the most common dry-run failure.
## Step 1 — DRY RUN (default; creates nothing)
`AZDO_DRY_RUN` defaults to dry-run unless it is the literal string `false`, so we
set it explicitly to be safe. In this mode the script PATCHes each item with
`validateOnly=true` — ADO checks types, required fields, and field values without
persisting anything.
```powershell
$env:AZDO_ORG = "Cartagena365" # or rely on the JSON / already-set env
$env:AZDO_PROJECT = "GlassHull"
$env:AZDO_DRY_RUN = "true"
dotnet run "${CLAUDE_SKILL_DIR}/scripts/create-backlog.cs" -- "<path>/backlog_input.json"
```
The script prints a `PASS` / `FAIL` line per item (and per parent), then a summary
like `DRY RUN done. valid=N invalid=M. No work items were created.` Relay that
list to the user. **If anything is FAIL, stop and fix the input** (usually a bad
`type` for the process, a missing `System.Title`, or unescaped `& < >` in an HTML
field like `Microsoft.VSTS.TCM.ReproSteps` / `System.Description`) before going on.
## Step 2 — REAL RUN (only after explicit approval)
Do **not** proceed until the user has clearly said yes (e.g. "create them",
"go ahead"). A clean dry-run is necessary but not sufficient — the human owns the
decision to write to their org.
Point `BACKLOG_RESULT` at your working directory so the writeback step can find it,
then flip the gate to `false`:
```powershell
$env:AZDO_DRY_RUN = "false"
$env:BACKLOG_RESULT = "<your-working-dir>/backlog_result.json"
dotnet run "${CLAUDE_SKILL_DIR}/scripts/create-backlog.cs" -- "<path>/backlog_input.json"
```
What happens: if the input has a `parent`, it is created first; every item is then
created and linked to it via `System.LinkTypes.Hierarchy-Reverse` (child → parent). If an item
has an `estimate`, a **child Task** carrying the hours (Original/Remaining Work + the breakdown
in its description) is created under that item — so the hierarchy is Feature → Bug/Story → Task.
`AZDO_AREA_PATH` and `AZDO_ASSIGNED_TO`, if set, are stamped on every item
(`AZDO_ASSIGNED_TO` only on items that didn't already set their own `System.AssignedTo`).
The script prints
`key … -> <type> #<id>` per item and writes `backlog_result.json`
(`key` → `id` / `url` / `type` / `title`). Failures are recorded per-item with an
`error` field instead of an `id`, so a partial run is visible rather than silent.
## After creating — verify
Confirm the items landed as intended. Query the new ids in one batch and check
`System.WorkItemType`, `System.State`, and the parent link. Pull the ids from
`backlog_result.json` and use the ADO MCP `wit_get_work_items_batch_by_ids` (or the
workitemsbatch REST endpoint). Spot-check that children show the expected parent.
## Idempotency — don't double-create
`create-backlog.cs` is **not** idempotent: re-running the REAL run on the same
`backlog_input.json` creates a second set of items (duplicates). After a successful
real run, hand off to **ado-writeback-tracking** to stamp `Ticket ID` / `Ticket URL`
back onto the source rows (matched by `key`). Once a row carries a Ticket ID, treat
it as done. If you must re-file a subset, prune the input to only the un-filed
`key`s first.
## Windows notes
- The install path can contain spaces — always wrap `"${CLAUDE_PLUGIN_ROOT}/..."`
and the JSON path in double quotes.
- Console is cp1252; the .cs program emits ASCII status lines, so output is safe.
(The bundled Python scripts force UTF-8 for source dumps / writeback.)From ThodsaphonSonthiphin/workflow-daily-work, MIT.
More from ThodsaphonSonthiphin/workflow-daily-work
- 0.529score
fit-gap-analysis
ThodsaphonSonthiphin
Compare a target (spec, product vision, competitor, RFP, or "to-be" design) against a system as actually built, and produce an evidence-first fit-gap — a…
SkillBFreshness: BClaude Code +9 - 0.529score
extract-findings
ThodsaphonSonthiphin
Normalize ANY input into findings.json — the first step toward turning review notes into an Azure DevOps backlog.
SkillBFreshness: BClaude Code +9 - 0.529score
feynman-explain
ThodsaphonSonthiphin
Fixed-format explanation discipline for concepts, systems, and code.
SkillBFreshness: BClaude Code +9 - 0.529score
ado-auth
ThodsaphonSonthiphin
Authenticate to Azure DevOps and fix auth problems — the shared primitive every other ado-* skill relies on.
SkillBFreshness: BClaude Code +9 - 0.529score
ado-writeback-tracking
ThodsaphonSonthiphin
Add traceability columns to a spreadsheet source and write created Azure DevOps ticket IDs/URLs back into it, matched row-by-row by key.
SkillBFreshness: BClaude Code +9 - 0.529score
findings-to-ado-backlog
ThodsaphonSonthiphin
End-to-end orchestrator that turns findings from ANY input (audit spreadsheet, code/security review, QA report, meeting notes, a pasted list of issues) into…
SkillBFreshness: BClaude Code +9 - 0.529score
findings-to-github-issues
ThodsaphonSonthiphin
End-to-end orchestrator that turns findings from ANY input (audit spreadsheet, code/security review, QA report, meeting notes, a pasted list of issues) into a…
SkillBFreshness: BClaude Code +9 - 0.529score
document-what-shipped
ThodsaphonSonthiphin
Write and publish ONE documentation page about something that already ships - a user manual, a process and flow page, a release note, a runbook, or a rules…
SkillBFreshness: BClaude Code +9 - 0.529score
chart-map
ThodsaphonSonthiphin
Chart a Decision map for an effort too big for one agent session — name the destination, grill breadth-first to separate real decision tickets from fog…
SkillBFreshness: BClaude Code +9 - 0.529score
classify-github-issues
ThodsaphonSonthiphin
Map triaged findings to GitHub Issues with the correct labels, milestone, and body, and emit github_backlog_input.json ready for creation.
SkillBFreshness: BClaude Code +9 - 0.529score
classify-work-items
ThodsaphonSonthiphin
Map triaged findings to the correct Azure DevOps work item types for the TARGET project's process, and emit backlog_input.json ready for creation.
SkillBFreshness: BClaude Code +9 - 0.529score
copy-audit
ThodsaphonSonthiphin
Find every copy of a plugin or skill on this machine and prove which ones are stale.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 6
- Last commit (this folder)
- Sep 5, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ThodsaphonSonthiphin
- 0.529score
extract-findings
ThodsaphonSonthiphin
Normalize ANY input into findings.json — the first step toward turning review notes into an Azure DevOps backlog.
SkillBFreshness: BClaude Code +9 - 0.529score
document-what-shipped
ThodsaphonSonthiphin
Write and publish ONE documentation page about something that already ships - a user manual, a process and flow page, a release note, a runbook, or a rules…
SkillBFreshness: BClaude Code +9 - 0.529score
ado-auth
ThodsaphonSonthiphin
Authenticate to Azure DevOps and fix auth problems — the shared primitive every other ado-* skill relies on.
SkillBFreshness: BClaude Code +9 - 0.529score
ado-writeback-tracking
ThodsaphonSonthiphin
Add traceability columns to a spreadsheet source and write created Azure DevOps ticket IDs/URLs back into it, matched row-by-row by key.
SkillBFreshness: BClaude Code +9 - 0.529score
feynman-explain
ThodsaphonSonthiphin
Fixed-format explanation discipline for concepts, systems, and code.
SkillBFreshness: BClaude Code +9 - 0.529score
chart-map
ThodsaphonSonthiphin
Chart a Decision map for an effort too big for one agent session — name the destination, grill breadth-first to separate real decision tickets from fog…
SkillBFreshness: BClaude Code +9
Cite this page
ado-create-work-items skill. Agent Mart. https://agentmart.dev/skills/thodsaphonsonthiphin-ado-create-work-items (last updated 2026-10-24)