@torus-engineering/tas-kit 1.11.1 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tas/README.md +334 -334
- package/{.claude → .tas/_platform/claude-code}/settings.json +0 -12
- package/{.claude → .tas/_platform}/hooks/code-quality.js +1 -1
- package/{.claude → .tas/_platform}/hooks/session-end.js +20 -25
- package/{.claude → .tas}/commands/ado-create.md +5 -4
- package/{.claude → .tas}/commands/ado-delete.md +5 -4
- package/{.claude → .tas}/commands/ado-update.md +5 -4
- package/{.claude → .tas}/commands/tas-adr.md +3 -3
- package/{.claude → .tas}/commands/tas-apitest-plan.md +2 -2
- package/{.claude → .tas}/commands/tas-apitest.md +4 -4
- package/{.claude → .tas}/commands/tas-bug.md +6 -6
- package/{.claude → .tas}/commands/tas-design.md +3 -3
- package/{.claude → .tas}/commands/tas-dev.md +11 -14
- package/{.claude → .tas}/commands/tas-epic.md +3 -3
- package/{.claude → .tas}/commands/tas-feature.md +4 -4
- package/{.claude → .tas}/commands/tas-fix.md +5 -5
- package/{.claude → .tas}/commands/tas-init.md +1 -1
- package/{.claude → .tas}/commands/tas-plan.md +198 -198
- package/{.claude → .tas}/commands/tas-prd.md +3 -3
- package/{.claude → .tas}/commands/tas-review.md +17 -15
- package/{.claude → .tas}/commands/tas-sad.md +3 -3
- package/{.claude → .tas}/commands/tas-security.md +4 -4
- package/{.claude → .tas}/commands/tas-story.md +3 -3
- package/.tas/platforms.json +5 -0
- package/.tas/project-status-example.yaml +17 -17
- package/{.claude/skills/ado-integration/SKILL.md → .tas/rules/ado-integration.md} +5 -15
- package/{.claude/skills/api-design/SKILL.md → .tas/rules/common/api-design.md} +517 -530
- package/{.claude → .tas}/rules/common/code-review.md +30 -6
- package/{.claude/rules/common/post-review-agent.md → .tas/rules/common/post-implementation-review.md} +51 -49
- package/{.claude → .tas}/rules/common/project-status.md +80 -80
- package/{.claude → .tas}/rules/common/stack-detection.md +29 -29
- package/.tas/{checklists → rules/common}/story-done.md +12 -5
- package/{.claude/skills/tas-tdd/SKILL.md → .tas/rules/common/tdd.md} +4 -38
- package/{.claude → .tas}/rules/common/testing.md +3 -8
- package/{.claude → .tas}/rules/common/token-logging.md +36 -27
- package/{.claude → .tas}/rules/csharp/api-testing.md +171 -171
- package/{.claude → .tas}/rules/csharp/coding-style.md +0 -2
- package/{.claude → .tas}/rules/csharp/security.md +10 -0
- package/{.claude → .tas}/rules/python/coding-style.md +0 -2
- package/{.claude → .tas}/rules/typescript/coding-style.md +0 -2
- package/.tas/rules/typescript/patterns.md +142 -0
- package/.tas/rules/typescript/security.md +88 -0
- package/{.claude → .tas}/rules/typescript/testing.md +0 -4
- package/{.claude → .tas}/rules/web/coding-style.md +0 -2
- package/.tas/tas-example.yaml +125 -126
- package/.tas/templates/ADR.md +47 -47
- package/.tas/templates/Bug.md +67 -67
- package/.tas/templates/Design-Spec.md +36 -36
- package/.tas/templates/Epic.md +46 -46
- package/.tas/templates/Feature.md +1 -1
- package/.tas/templates/Security-Report.md +27 -27
- package/.tas/tools/tas-ado-readme.md +169 -169
- package/.tas/tools/tas-ado.py +621 -621
- package/README.md +334 -334
- package/bin/cli.js +91 -73
- package/lib/adapters/antigravity.js +131 -0
- package/lib/adapters/claude-code.js +35 -0
- package/lib/adapters/codex.js +157 -0
- package/lib/adapters/cursor.js +80 -0
- package/lib/adapters/index.js +20 -0
- package/lib/adapters/utils.js +81 -0
- package/lib/deleted-files.json +99 -0
- package/lib/install.js +543 -327
- package/package.json +5 -4
- package/.claude/agents/code-reviewer.md +0 -41
- package/.claude/agents/e2e-runner.md +0 -61
- package/.claude/agents/planner.md +0 -82
- package/.claude/agents/tdd-guide.md +0 -84
- package/.claude/commands/tas-verify.md +0 -51
- package/.claude/rules/typescript/patterns.md +0 -62
- package/.claude/rules/typescript/security.md +0 -28
- package/.claude/settings.local.json +0 -38
- package/.claude/skills/ai-regression-testing/SKILL.md +0 -364
- package/.claude/skills/architecture-decision-records/SKILL.md +0 -184
- package/.claude/skills/benchmark/SKILL.md +0 -98
- package/.claude/skills/browser-qa/SKILL.md +0 -92
- package/.claude/skills/canary-watch/SKILL.md +0 -104
- package/.claude/skills/js-backend-patterns/SKILL.md +0 -603
- package/.claude/skills/tas-conventions/SKILL.md +0 -65
- package/.claude/skills/tas-implementation-complete/SKILL.md +0 -100
- package/.claude/skills/token-logger/SKILL.md +0 -19
- package/.tas/checklists/code-review.md +0 -29
- package/.tas/checklists/security.md +0 -21
- /package/{.claude → .tas}/agents/architect.md +0 -0
- /package/{.claude → .tas}/agents/aws-reviewer.md +0 -0
- /package/{.claude → .tas}/agents/build-resolver.md +0 -0
- /package/{.claude → .tas}/agents/code-explorer.md +0 -0
- /package/{.claude → .tas}/agents/csharp-reviewer.md +0 -0
- /package/{.claude → .tas}/agents/database-reviewer.md +0 -0
- /package/{.claude → .tas}/agents/doc-updater.md +0 -0
- /package/{.claude → .tas}/agents/python-reviewer.md +0 -0
- /package/{.claude → .tas}/agents/security-reviewer.md +0 -0
- /package/{.claude → .tas}/agents/typescript-reviewer.md +0 -0
- /package/{.claude → .tas}/commands/ado-get.md +0 -0
- /package/{.claude → .tas}/commands/ado-status.md +0 -0
- /package/{.claude → .tas}/commands/tas-brainstorm.md +0 -0
- /package/{.claude → .tas}/commands/tas-e2e-mobile.md +0 -0
- /package/{.claude → .tas}/commands/tas-e2e-web.md +0 -0
- /package/{.claude → .tas}/commands/tas-e2e.md +0 -0
- /package/{.claude → .tas}/commands/tas-functest-mobile.md +0 -0
- /package/{.claude → .tas}/commands/tas-functest-web.md +0 -0
- /package/{.claude → .tas}/commands/tas-functest.md +0 -0
- /package/{.claude → .tas}/commands/tas-spec.md +0 -0
- /package/{.claude → .tas}/commands/tas-status.md +0 -0
- /package/{.claude → .tas}/rules/.gitkeep +0 -0
- /package/{.claude → .tas}/rules/common/hooks.md +0 -0
- /package/{.claude → .tas}/rules/common/patterns.md +0 -0
- /package/{.claude → .tas}/rules/common/security.md +0 -0
- /package/{.claude → .tas}/rules/csharp/hooks.md +0 -0
- /package/{.claude → .tas}/rules/csharp/patterns.md +0 -0
- /package/{.claude → .tas}/rules/csharp/testing.md +0 -0
- /package/{.claude → .tas}/rules/python/hooks.md +0 -0
- /package/{.claude → .tas}/rules/python/patterns.md +0 -0
- /package/{.claude → .tas}/rules/python/security.md +0 -0
- /package/{.claude → .tas}/rules/python/testing.md +0 -0
- /package/{.claude → .tas}/rules/typescript/hooks.md +0 -0
- /package/{.claude → .tas}/rules/web/design-quality.md +0 -0
- /package/{.claude → .tas}/rules/web/hooks.md +0 -0
- /package/{.claude → .tas}/rules/web/patterns.md +0 -0
- /package/{.claude → .tas}/rules/web/performance.md +0 -0
- /package/{.claude → .tas}/rules/web/security.md +0 -0
- /package/{.claude → .tas}/rules/web/testing.md +0 -0
- /package/{CLAUDE-Example.md → .tas/templates/AGENTS.md} +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# Security Report
|
|
2
|
-
|
|
3
|
-
> **Last Scan:** {Date}
|
|
4
|
-
> **Scope:** {Full scan | File/Module specific}
|
|
5
|
-
> **Scanned by:** {DSE name}
|
|
6
|
-
|
|
7
|
-
## Summary
|
|
8
|
-
| Severity | Open | Fixed | Accepted Risk | Total |
|
|
9
|
-
|----------|------|-------|---------------|-------|
|
|
10
|
-
| Critical | 0 | 0 | 0 | 0 |
|
|
11
|
-
| High | 0 | 0 | 0 | 0 |
|
|
12
|
-
| Medium | 0 | 0 | 0 | 0 |
|
|
13
|
-
| Low | 0 | 0 | 0 | 0 |
|
|
14
|
-
|
|
15
|
-
## Findings
|
|
16
|
-
|
|
17
|
-
### SEC-001: {Title}
|
|
18
|
-
- **Severity:** Critical | High | Medium | Low
|
|
19
|
-
- **Status:** Open | In Progress | Fixed | Accepted Risk
|
|
20
|
-
- **Location:** {file:line}
|
|
21
|
-
- **Description:** {Issue description}
|
|
22
|
-
- **Recommended Fix:** {Specific fix approach}
|
|
23
|
-
- **Fixed Date:** {Date, if fixed}
|
|
24
|
-
|
|
25
|
-
## Scan History
|
|
26
|
-
| Date | Scope | New Findings | Fixed | Remaining |
|
|
27
|
-
|------|-------|-------------|-------|-----------|
|
|
1
|
+
# Security Report
|
|
2
|
+
|
|
3
|
+
> **Last Scan:** {Date}
|
|
4
|
+
> **Scope:** {Full scan | File/Module specific}
|
|
5
|
+
> **Scanned by:** {DSE name}
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
| Severity | Open | Fixed | Accepted Risk | Total |
|
|
9
|
+
|----------|------|-------|---------------|-------|
|
|
10
|
+
| Critical | 0 | 0 | 0 | 0 |
|
|
11
|
+
| High | 0 | 0 | 0 | 0 |
|
|
12
|
+
| Medium | 0 | 0 | 0 | 0 |
|
|
13
|
+
| Low | 0 | 0 | 0 | 0 |
|
|
14
|
+
|
|
15
|
+
## Findings
|
|
16
|
+
|
|
17
|
+
### SEC-001: {Title}
|
|
18
|
+
- **Severity:** Critical | High | Medium | Low
|
|
19
|
+
- **Status:** Open | In Progress | Fixed | Accepted Risk
|
|
20
|
+
- **Location:** {file:line}
|
|
21
|
+
- **Description:** {Issue description}
|
|
22
|
+
- **Recommended Fix:** {Specific fix approach}
|
|
23
|
+
- **Fixed Date:** {Date, if fixed}
|
|
24
|
+
|
|
25
|
+
## Scan History
|
|
26
|
+
| Date | Scope | New Findings | Fixed | Remaining |
|
|
27
|
+
|------|-------|-------------|-------|-----------|
|
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
# TAS Kit Skill Specification: ado-integration
|
|
2
|
-
|
|
3
|
-
**Skill name**: ado-integration
|
|
4
|
-
**Version**: 0.2 (concept & spec date: March 17, 2026)
|
|
5
|
-
**Purpose**:
|
|
6
|
-
Allows AI agent in coding environment (Claude Code, Cursor, VS Code + terminal) to perform **CRUD** and two-way sync between Markdown (.md) files in repository and work items on Azure DevOps (Epic, Feature, User Story, Bug), including automatic hierarchy management (parent-child relations).
|
|
7
|
-
|
|
8
|
-
Main objectives:
|
|
9
|
-
- Transform AI into "team member" capable of self-managing backlog without leaving editor
|
|
10
|
-
- Ensure .md file is single source of truth (local ↔ ADO sync)
|
|
11
|
-
- Record sync timestamp so agent knows data freshness
|
|
12
|
-
|
|
13
|
-
## 1. Environment Requirements & Dependencies
|
|
14
|
-
|
|
15
|
-
**Required**:
|
|
16
|
-
- Azure CLI installed + extension `azure-devops`
|
|
17
|
-
```bash
|
|
18
|
-
az extension add --name azure-devops --upgrade
|
|
19
|
-
```
|
|
20
|
-
- Python 3.8+
|
|
21
|
-
- Package: `pyyaml` (`pip install pyyaml`)
|
|
22
|
-
|
|
23
|
-
**Configuration** (file `tas.yaml` at repo root):
|
|
24
|
-
```yaml
|
|
25
|
-
ado:
|
|
26
|
-
organization: https://dev.azure.com/your-org-name
|
|
27
|
-
project: Your-Project-Name
|
|
28
|
-
# pat: PAT with scope Work Items (Full) + optional Read & manage wiki
|
|
29
|
-
# If no pat in file → use environment variable AZURE_DEVOPS_PAT
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## 2. Main Files to Create
|
|
33
|
-
|
|
34
|
-
- `tools/tas-ado.py` → Python script executing all commands
|
|
35
|
-
- `skills/ado-integration.md` → usage documentation (like this file)
|
|
36
|
-
|
|
37
|
-
## 3. Supported CLI Commands
|
|
38
|
-
|
|
39
|
-
All commands run in form:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
python tools/tas-ado.py <command> [arguments]
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Create commands (create new + auto rename file + optional parent)
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
create-epic <temp-id> [--parent-id <id>]
|
|
49
|
-
create-feature <temp-id> [--parent-id <id>]
|
|
50
|
-
create-story <temp-id> [--parent-id <id>]
|
|
51
|
-
create-bug <temp-id> [--parent-id <id>]
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Example:
|
|
55
|
-
```bash
|
|
56
|
-
python tools/tas-ado.py create-story 789 --parent-id 456
|
|
57
|
-
# → reads epic-789-*.md → creates User Story → renames to story-1234-*.md → adds parent relation to 456
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Pull / Get commands
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
get <ado-id>
|
|
64
|
-
pull <ado-id> # alias
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Example:
|
|
68
|
-
```bash
|
|
69
|
-
python tools/tas-ado.py get 5345
|
|
70
|
-
# → creates/recreates file epic-5345-slug-title.md with frontmatter + content
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Update commands
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
update-epic <ado-id> [--assign <name/email>] [--status <state>]
|
|
77
|
-
update-feature <ado-id> [--assign <...>] [--status <...>]
|
|
78
|
-
update-story <ado-id> [--assign <...>] [--status <...>]
|
|
79
|
-
update-bug <ado-id> [--assign <...>] [--status <...>]
|
|
80
|
-
|
|
81
|
-
update-status <ado-id> --status <state> [--assign <name/email>]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Delete commands
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
delete-epic <ado-id>
|
|
88
|
-
delete-feature <ado-id>
|
|
89
|
-
delete-story <ado-id>
|
|
90
|
-
delete-bug <ado-id>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## 4. File .md Convention
|
|
94
|
-
|
|
95
|
-
- File name pattern: `{type}-{ado_id or temp_id}-{slug-title}.md`
|
|
96
|
-
- type: epic / feature / story / bug
|
|
97
|
-
- slug-title: lowercase, replace spaces with -, remove special characters
|
|
98
|
-
|
|
99
|
-
- Frontmatter YAML (always at file start):
|
|
100
|
-
|
|
101
|
-
```yaml
|
|
102
|
-
---
|
|
103
|
-
ado_id: 5345
|
|
104
|
-
ado_type: Epic # Epic / Feature / User Story / Bug
|
|
105
|
-
ado_title: Landing Page Redesign
|
|
106
|
-
ado_state: Active
|
|
107
|
-
ado_assigned_to: Nguyen Van A <email@domain.com>
|
|
108
|
-
ado_created: 2026-03-10
|
|
109
|
-
last_ado_sync: 2026-03-17 15:42:08
|
|
110
|
-
# optional: parent_ado_id: 100 (if want to support auto detect parent later)
|
|
111
|
-
---
|
|
112
|
-
# Title (must match ado_title)
|
|
113
|
-
|
|
114
|
-
Content description, acceptance criteria, steps to reproduce, etc.
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Important**:
|
|
118
|
-
- Every time **create / pull / update / update-status** succeeds → **update** (or add) `last_ado_sync` field with current time (format: YYYY-MM-DD HH:MM:SS)
|
|
119
|
-
|
|
120
|
-
## 5. Detailed Logic Requirements
|
|
121
|
-
|
|
122
|
-
### When create:
|
|
123
|
-
1. Find file by pattern `{type}-{temp_id}-*.md`
|
|
124
|
-
2. Extract title (first # line), description (remaining content)
|
|
125
|
-
3. Create work item using `az boards work-item create`
|
|
126
|
-
4. Get new ID → rename file to `{type}-{new_id}-*.md`
|
|
127
|
-
5. If `--parent-id` → run `az boards work-item relation add --id <new_id> --relation-type parent --target-id <parent_id>`
|
|
128
|
-
6. Auto detect parent_id from frontmatter `parent_ado_id` or file name
|
|
129
|
-
7. Update `last_ado_sync` in frontmatter
|
|
130
|
-
|
|
131
|
-
### When pull/get:
|
|
132
|
-
1. Get work item using `az boards work-item show --id <id> --expand fields`
|
|
133
|
-
2. Convert description (HTML → basic Markdown)
|
|
134
|
-
3. Create file `{type}-{id}-{slug}.md`
|
|
135
|
-
4. Write frontmatter + content
|
|
136
|
-
5. Update `last_ado_sync`
|
|
137
|
-
|
|
138
|
-
### When update:
|
|
139
|
-
1. Find file by pattern `*-<id>-*.md`
|
|
140
|
-
2. Read title & description from file
|
|
141
|
-
3. Update using `az boards work-item update`
|
|
142
|
-
4. Update `last_ado_sync`
|
|
143
|
-
|
|
144
|
-
### When update-status:
|
|
145
|
-
1. Find file by pattern
|
|
146
|
-
2. Only update state &/or assigned-to
|
|
147
|
-
3. Update `last_ado_sync` if file found
|
|
148
|
-
|
|
149
|
-
### When delete:
|
|
150
|
-
- Only delete on ADO, don't touch local files
|
|
151
|
-
|
|
152
|
-
## 6. Extension Suggestions (not required for v0.2)
|
|
153
|
-
|
|
154
|
-
- Support additional fields: priority, effort, labels, acceptance criteria
|
|
155
|
-
- Auto git add/commit/push after sync
|
|
156
|
-
- Better HTML → Markdown conversion (table, code block, list)
|
|
157
|
-
|
|
158
|
-
## 7. How to Use in Agent Prompt
|
|
159
|
-
|
|
160
|
-
Example prompt template for AI agent:
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
/ado-create-feature 042 --parent-id 100
|
|
164
|
-
/ado-create-story 789 --parent-id <feature-id just created>
|
|
165
|
-
/ado-get 1234 # fetch new bug to fix
|
|
166
|
-
/ado-update-bug 1234 --status Resolved
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
This skill is designed to integrate smoothly into agentic frameworks like TAS Kit, Superpowers, BMAD.
|
|
1
|
+
# TAS Kit Skill Specification: ado-integration
|
|
2
|
+
|
|
3
|
+
**Skill name**: ado-integration
|
|
4
|
+
**Version**: 0.2 (concept & spec date: March 17, 2026)
|
|
5
|
+
**Purpose**:
|
|
6
|
+
Allows AI agent in coding environment (Claude Code, Cursor, VS Code + terminal) to perform **CRUD** and two-way sync between Markdown (.md) files in repository and work items on Azure DevOps (Epic, Feature, User Story, Bug), including automatic hierarchy management (parent-child relations).
|
|
7
|
+
|
|
8
|
+
Main objectives:
|
|
9
|
+
- Transform AI into "team member" capable of self-managing backlog without leaving editor
|
|
10
|
+
- Ensure .md file is single source of truth (local ↔ ADO sync)
|
|
11
|
+
- Record sync timestamp so agent knows data freshness
|
|
12
|
+
|
|
13
|
+
## 1. Environment Requirements & Dependencies
|
|
14
|
+
|
|
15
|
+
**Required**:
|
|
16
|
+
- Azure CLI installed + extension `azure-devops`
|
|
17
|
+
```bash
|
|
18
|
+
az extension add --name azure-devops --upgrade
|
|
19
|
+
```
|
|
20
|
+
- Python 3.8+
|
|
21
|
+
- Package: `pyyaml` (`pip install pyyaml`)
|
|
22
|
+
|
|
23
|
+
**Configuration** (file `tas.yaml` at repo root):
|
|
24
|
+
```yaml
|
|
25
|
+
ado:
|
|
26
|
+
organization: https://dev.azure.com/your-org-name
|
|
27
|
+
project: Your-Project-Name
|
|
28
|
+
# pat: PAT with scope Work Items (Full) + optional Read & manage wiki
|
|
29
|
+
# If no pat in file → use environment variable AZURE_DEVOPS_PAT
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 2. Main Files to Create
|
|
33
|
+
|
|
34
|
+
- `tools/tas-ado.py` → Python script executing all commands
|
|
35
|
+
- `skills/ado-integration.md` → usage documentation (like this file)
|
|
36
|
+
|
|
37
|
+
## 3. Supported CLI Commands
|
|
38
|
+
|
|
39
|
+
All commands run in form:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
python tools/tas-ado.py <command> [arguments]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Create commands (create new + auto rename file + optional parent)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
create-epic <temp-id> [--parent-id <id>]
|
|
49
|
+
create-feature <temp-id> [--parent-id <id>]
|
|
50
|
+
create-story <temp-id> [--parent-id <id>]
|
|
51
|
+
create-bug <temp-id> [--parent-id <id>]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
```bash
|
|
56
|
+
python tools/tas-ado.py create-story 789 --parent-id 456
|
|
57
|
+
# → reads epic-789-*.md → creates User Story → renames to story-1234-*.md → adds parent relation to 456
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Pull / Get commands
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
get <ado-id>
|
|
64
|
+
pull <ado-id> # alias
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
```bash
|
|
69
|
+
python tools/tas-ado.py get 5345
|
|
70
|
+
# → creates/recreates file epic-5345-slug-title.md with frontmatter + content
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Update commands
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
update-epic <ado-id> [--assign <name/email>] [--status <state>]
|
|
77
|
+
update-feature <ado-id> [--assign <...>] [--status <...>]
|
|
78
|
+
update-story <ado-id> [--assign <...>] [--status <...>]
|
|
79
|
+
update-bug <ado-id> [--assign <...>] [--status <...>]
|
|
80
|
+
|
|
81
|
+
update-status <ado-id> --status <state> [--assign <name/email>]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Delete commands
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
delete-epic <ado-id>
|
|
88
|
+
delete-feature <ado-id>
|
|
89
|
+
delete-story <ado-id>
|
|
90
|
+
delete-bug <ado-id>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 4. File .md Convention
|
|
94
|
+
|
|
95
|
+
- File name pattern: `{type}-{ado_id or temp_id}-{slug-title}.md`
|
|
96
|
+
- type: epic / feature / story / bug
|
|
97
|
+
- slug-title: lowercase, replace spaces with -, remove special characters
|
|
98
|
+
|
|
99
|
+
- Frontmatter YAML (always at file start):
|
|
100
|
+
|
|
101
|
+
```yaml
|
|
102
|
+
---
|
|
103
|
+
ado_id: 5345
|
|
104
|
+
ado_type: Epic # Epic / Feature / User Story / Bug
|
|
105
|
+
ado_title: Landing Page Redesign
|
|
106
|
+
ado_state: Active
|
|
107
|
+
ado_assigned_to: Nguyen Van A <email@domain.com>
|
|
108
|
+
ado_created: 2026-03-10
|
|
109
|
+
last_ado_sync: 2026-03-17 15:42:08
|
|
110
|
+
# optional: parent_ado_id: 100 (if want to support auto detect parent later)
|
|
111
|
+
---
|
|
112
|
+
# Title (must match ado_title)
|
|
113
|
+
|
|
114
|
+
Content description, acceptance criteria, steps to reproduce, etc.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Important**:
|
|
118
|
+
- Every time **create / pull / update / update-status** succeeds → **update** (or add) `last_ado_sync` field with current time (format: YYYY-MM-DD HH:MM:SS)
|
|
119
|
+
|
|
120
|
+
## 5. Detailed Logic Requirements
|
|
121
|
+
|
|
122
|
+
### When create:
|
|
123
|
+
1. Find file by pattern `{type}-{temp_id}-*.md`
|
|
124
|
+
2. Extract title (first # line), description (remaining content)
|
|
125
|
+
3. Create work item using `az boards work-item create`
|
|
126
|
+
4. Get new ID → rename file to `{type}-{new_id}-*.md`
|
|
127
|
+
5. If `--parent-id` → run `az boards work-item relation add --id <new_id> --relation-type parent --target-id <parent_id>`
|
|
128
|
+
6. Auto detect parent_id from frontmatter `parent_ado_id` or file name
|
|
129
|
+
7. Update `last_ado_sync` in frontmatter
|
|
130
|
+
|
|
131
|
+
### When pull/get:
|
|
132
|
+
1. Get work item using `az boards work-item show --id <id> --expand fields`
|
|
133
|
+
2. Convert description (HTML → basic Markdown)
|
|
134
|
+
3. Create file `{type}-{id}-{slug}.md`
|
|
135
|
+
4. Write frontmatter + content
|
|
136
|
+
5. Update `last_ado_sync`
|
|
137
|
+
|
|
138
|
+
### When update:
|
|
139
|
+
1. Find file by pattern `*-<id>-*.md`
|
|
140
|
+
2. Read title & description from file
|
|
141
|
+
3. Update using `az boards work-item update`
|
|
142
|
+
4. Update `last_ado_sync`
|
|
143
|
+
|
|
144
|
+
### When update-status:
|
|
145
|
+
1. Find file by pattern
|
|
146
|
+
2. Only update state &/or assigned-to
|
|
147
|
+
3. Update `last_ado_sync` if file found
|
|
148
|
+
|
|
149
|
+
### When delete:
|
|
150
|
+
- Only delete on ADO, don't touch local files
|
|
151
|
+
|
|
152
|
+
## 6. Extension Suggestions (not required for v0.2)
|
|
153
|
+
|
|
154
|
+
- Support additional fields: priority, effort, labels, acceptance criteria
|
|
155
|
+
- Auto git add/commit/push after sync
|
|
156
|
+
- Better HTML → Markdown conversion (table, code block, list)
|
|
157
|
+
|
|
158
|
+
## 7. How to Use in Agent Prompt
|
|
159
|
+
|
|
160
|
+
Example prompt template for AI agent:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
/ado-create-feature 042 --parent-id 100
|
|
164
|
+
/ado-create-story 789 --parent-id <feature-id just created>
|
|
165
|
+
/ado-get 1234 # fetch new bug to fix
|
|
166
|
+
/ado-update-bug 1234 --status Resolved
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
This skill is designed to integrate smoothly into agentic frameworks like TAS Kit, Superpowers, BMAD.
|