ado-writeback-tracking
Add traceability columns to a spreadsheet source and write created Azure DevOps ticket IDs/URLs back into it, matched row-by-row by key.
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-writeback-tracking
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: documents, spreadsheets, devops, cloud
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
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ado-writeback-tracking
What's inside
- Skill name
ado-writeback-tracking- Description
- Add traceability columns to a spreadsheet source and write created Azure DevOps ticket IDs/URLs back into it, matched row-by-row by key. Use this right after creating work items — when you have a backlog_result.json and the original source was a spreadsheet (xlsx/csv). Triggers on "write the ticket links back", "track which row got which ticket", "update the spreadsheet with the ADO IDs", "fill in the ticket column", "close the loop on the audit sheet", or any request to record created-item IDs back onto the source rows. Runs the bundled tracking.py (add-columns + writeback). For doc/pasted-text input there are no rows to write to — in that case just report the created links instead.
- License
- MIT
- Instructions
- 106 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (3)
- SKILL.md
- data-contracts.md · references/
- tracking.py · scripts/
SKILL.md (first lines)
<!-- generated: third-party requirements -->
> **Requires:** `pip install openpyxl` — this skill's scripts import `openpyxl`.
# ado-writeback-tracking
Closes the loop: once items exist in ADO, stamp their IDs and URLs back onto the
spreadsheet the findings came from, so every row shows which ticket it became.
This makes the source self-tracking — anyone reopening the sheet sees status
without cross-referencing ADO. The link between a row and its ticket is the
**`key`** field (see `references/data-contracts.md`),
carried from [[extract-findings]] (`keyColumn`) through `backlog_result.json`.
## When this applies
- **Spreadsheet sources only** (`.xlsx` / `.csv` / `.tsv`). There must be one
row per finding to write back to.
- **Doc / pasted-text sources have no rows** — skip the script entirely and just
report the created ticket links (parent + per-item URLs) from
`backlog_result.json` in chat. Don't fabricate a spreadsheet to write to.
- You need `backlog_result.json` from [[ado-create-work-items]] (which runs
`create-backlog.cs`). Each `items[].id` is the created work item; rows whose
key has no matching created `id` are simply skipped.
## Before you write
Back up the user's source file first — `tracking.py` edits it **in place** and
overwrites it. A quick copy keeps you safe if a key mismatch or wrong `--key`
sends links to the wrong rows:
```powershell
Copy-Item "<file>.xlsx" "<file>.bak.xlsx"
```
## Step 1 — add tracking columns (idempotent)
Appends `Ticket ID`, `Ticket URL`, `WI State`, `Created` after the last used
column. Safe to run repeatedly — columns that already exist are not duplicated.
Run this once before the first writeback so the target columns exist:
```powershell
python "${CLAUDE_SKILL_DIR}/scripts/tracking.py" add-columns --source "<file>" --key "#"
```
It prints which columns map to which letters (xlsx) or confirms they're ensured
(csv). `--key` defaults to `#` if omitted, but pass it explicitly to match.
## Step 2 — write the ticket links back (idempotent)
Matches each `backlog_result.json` item's `key` to the value in the source's key
column and fills the four tracking columns. Rows that **already hold a Ticket
ID are left as-is**, so re-running after a partial create only fills the new
rows:
```powershell
python "${CLAUDE_SKILL_DIR}/scripts/tracking.py" writeback --source "<file>" --result "<path>/backlog_result.json" --key "#"
```
Per row it writes:
- `Ticket ID` ← `items[].id`
- `Ticket URL` ← `https://dev.azure.com/{org}/{project}/_workitems/edit/{id}` (built from the `org`/`project` in `backlog_result.json`)
- `WI State` ← `New` (the state freshly created items land in)
- `Created` ← a `YYYY-MM-DD HH:MM` timestamp
It logs each `key -> #id`, prints the parent link if one exists, and ends with
`wrote N ticket links back to source`.
## The `--key` must line up across all three files
This is the single most common failure. The `--key` you pass here must be the
**same column name** as:
- `keyColumn` chosen in [[extract-findings]] (e.g. `#`, `ID`, `Row`), and
- the `key` value carried in `backlog_input.json` and `backlog_result.json`.
Values are compared as strings. If the script prints
`warn: key <x> not found in source`, the `key` in the result doesn't match any
value in that column — re-check `--key` (right column?) and that the source
hasn't been re-sorted or had rows removed since extraction. If it raises
`missing column '<name>' — run add-columns first`, you skipped Step 1 (or pointed
`--key` at a column that isn't in the sheet).
## Tiny example
`backlog_result.json` (abridged):
```json
{ "org": "Cartagena365", "project": "GlassHull",
"items": [ { "key": "1", "id": 6073, "type": "Bug", "title": "..." } ] }
```
After writeback, the source row whose `#` column is `1` gains:
`Ticket ID=6073`, `Ticket URL=https://dev.azure.com/Cartagena365/GlassHull/_workitems/edit/6073`,
`WI State=New`, `Created=2026-06-02 14:05`.
## Notes
- No ADO auth or network call happens here — this step only reads the JSON
result and edits the local file. (Auth lives in [[ado-auth]] / the create step.)
- The bundled Python forces UTF-8, so accented/Thai text survives even on a
cp1252 PowerShell console.
- This is the final stage of the [[findings-to-ado-backlog]] pipeline:
[[extract-findings]] → [[triage-findings]] → [[classify-work-items]] →
[[ado-create-work-items]] → **ado-writeback-tracking**.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-create-work-items
ThodsaphonSonthiphin
Create Azure DevOps work items from a backlog_input.json (the output of classify-work-items) via the bundled create-backlog.cs script.
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-create-work-items
ThodsaphonSonthiphin
Create Azure DevOps work items from a backlog_input.json (the output of classify-work-items) via the bundled create-backlog.cs script.
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-writeback-tracking skill. Agent Mart. https://agentmart.dev/skills/thodsaphonsonthiphin-ado-writeback-tracking (last updated 2026-10-24)