@torus-engineering/tas-kit 1.5.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/.claude/agents/ado-agent.md +39 -0
- package/.claude/agents/code-reviewer.md +41 -0
- package/.claude/commands/ado-create.md +26 -0
- package/.claude/commands/ado-delete.md +20 -0
- package/.claude/commands/ado-get.md +19 -0
- package/.claude/commands/ado-status.md +17 -0
- package/.claude/commands/ado-update.md +25 -0
- package/.claude/commands/tas-adr.md +28 -0
- package/.claude/commands/tas-brainstorm.md +19 -0
- package/.claude/commands/tas-bug.md +62 -0
- package/.claude/commands/tas-design.md +31 -0
- package/.claude/commands/tas-dev-story.md +61 -0
- package/.claude/commands/tas-epic.md +29 -0
- package/.claude/commands/tas-feature.md +41 -0
- package/.claude/commands/tas-init.md +17 -0
- package/.claude/commands/tas-prd.md +31 -0
- package/.claude/commands/tas-review-code.md +42 -0
- package/.claude/commands/tas-sad.md +37 -0
- package/.claude/commands/tas-security-check.md +30 -0
- package/.claude/commands/tas-status.md +16 -0
- package/.claude/commands/tas-story.md +50 -0
- package/.claude/commands/tas-verify.md +33 -0
- package/.claude/settings.json +21 -0
- package/.claude/skills/ado-integration/SKILL.md +32 -0
- package/.claude/skills/tas-conventions/SKILL.md +17 -0
- package/.claude/skills/tas-tdd/SKILL.md +26 -0
- package/.env.example +1 -0
- package/.tas/README.md +1583 -0
- package/.tas/checklists/code-review.md +29 -0
- package/.tas/checklists/security.md +21 -0
- package/.tas/checklists/story-done.md +23 -0
- package/.tas/project-status-example.yaml +17 -0
- package/.tas/tas-example.yaml +108 -0
- package/.tas/templates/ADR.md +47 -0
- package/.tas/templates/Bug.md +67 -0
- package/.tas/templates/Design-Spec.md +36 -0
- package/.tas/templates/Epic.md +46 -0
- package/.tas/templates/Feature.md +55 -0
- package/.tas/templates/PRD.md +142 -0
- package/.tas/templates/Performance-Report.md +30 -0
- package/.tas/templates/SAD.md +64 -0
- package/.tas/templates/Security-Report.md +27 -0
- package/.tas/templates/Story.md +88 -0
- package/.tas/tools/tas-ado-readme.md +169 -0
- package/.tas/tools/tas-ado.py +621 -0
- package/CLAUDE-Example.md +58 -0
- package/README.md +67 -0
- package/bin/cli.js +49 -0
- package/lib/install.js +114 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# TAS Kit
|
|
2
|
+
|
|
3
|
+
**Torus Agentic SDLC Kit** — Claude Code commands, skills and templates for modern AI-assisted SDLC.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx tas-kit install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx tas-kit install --directory /path/to/my-project
|
|
15
|
+
npx tas-kit install --yes # skip confirmation prompts
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## What gets installed
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
.claude/
|
|
22
|
+
commands/ 20 slash commands (/tas-*, /ado-*)
|
|
23
|
+
skills/ 3 auto-invoked skills
|
|
24
|
+
agents/ 2 specialized subagents
|
|
25
|
+
.tas/
|
|
26
|
+
templates/ Markdown templates (PRD, SAD, ADR, Epic, Feature, Story...)
|
|
27
|
+
checklists/ Code review, story done, security checklists
|
|
28
|
+
tools/ ADO integration script (tas-ado.py)
|
|
29
|
+
CLAUDE.md Project context template (edit this for your project)
|
|
30
|
+
tas.yaml Flow configuration template (edit this for your project)
|
|
31
|
+
.env.example Environment variable template
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## After install
|
|
35
|
+
|
|
36
|
+
1. Edit `CLAUDE.md` — add your project's tech stack and conventions
|
|
37
|
+
2. Edit `tas.yaml` — set project name, team and ADO config
|
|
38
|
+
3. Create `.env` — add `AZURE_DEVOPS_PAT` (see `.env.example`)
|
|
39
|
+
4. Open Claude Code — run `/tas-init` to initialize your project
|
|
40
|
+
|
|
41
|
+
## Commands
|
|
42
|
+
|
|
43
|
+
| Command | Description |
|
|
44
|
+
|---------|-------------|
|
|
45
|
+
| `/tas-init` | Initialize TAS for a new project |
|
|
46
|
+
| `/tas-status` | Show current project state |
|
|
47
|
+
| `/tas-prd` | Create/update Product Requirements Document |
|
|
48
|
+
| `/tas-sad` | Create/update Solution Architecture Document |
|
|
49
|
+
| `/tas-epic` | Create/update Epic |
|
|
50
|
+
| `/tas-feature` | Create/update Feature |
|
|
51
|
+
| `/tas-story` | Create/update Story |
|
|
52
|
+
| `/tas-dev-story` | Implement a story (agentic) |
|
|
53
|
+
| `/tas-review-code` | Code review with checklist |
|
|
54
|
+
| `/tas-brainstorm` | Brainstorm solutions |
|
|
55
|
+
| `/tas-bug` | Create bug report |
|
|
56
|
+
| `/tas-security-check` | Security review |
|
|
57
|
+
| `/tas-verify` | Verify feature on staging |
|
|
58
|
+
| `/ado-*` | Azure DevOps integration |
|
|
59
|
+
|
|
60
|
+
## Requirements
|
|
61
|
+
|
|
62
|
+
- Node.js 18+
|
|
63
|
+
- [Claude Code](https://claude.ai/code)
|
|
64
|
+
|
|
65
|
+
## Documentation
|
|
66
|
+
|
|
67
|
+
See `.tas/README.md` after install for full kit documentation.
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { install } from '../lib/install.js';
|
|
3
|
+
|
|
4
|
+
const args = process.argv.slice(2);
|
|
5
|
+
const command = args[0];
|
|
6
|
+
|
|
7
|
+
function printHelp() {
|
|
8
|
+
console.log(`
|
|
9
|
+
tas-kit — Torus Agentic SDLC Kit installer
|
|
10
|
+
|
|
11
|
+
Usage:
|
|
12
|
+
npx tas-kit install [options]
|
|
13
|
+
|
|
14
|
+
Options:
|
|
15
|
+
--directory <path> Target directory (default: current working directory)
|
|
16
|
+
--yes, -y Skip confirmation prompts
|
|
17
|
+
--help, -h Show this help message
|
|
18
|
+
|
|
19
|
+
Examples:
|
|
20
|
+
npx tas-kit install
|
|
21
|
+
npx tas-kit install --directory /path/to/my-project
|
|
22
|
+
npx tas-kit install --yes
|
|
23
|
+
`.trim());
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (!command || command === '--help' || command === '-h') {
|
|
27
|
+
printHelp();
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (command !== 'install') {
|
|
32
|
+
console.error(`Unknown command: "${command}"\n`);
|
|
33
|
+
printHelp();
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const opts = { directory: process.cwd(), yes: false };
|
|
38
|
+
for (let i = 1; i < args.length; i++) {
|
|
39
|
+
if ((args[i] === '--directory' || args[i] === '-d') && args[i + 1]) {
|
|
40
|
+
opts.directory = args[++i];
|
|
41
|
+
} else if (args[i] === '--yes' || args[i] === '-y') {
|
|
42
|
+
opts.yes = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
install(opts).catch((err) => {
|
|
47
|
+
console.error('\nInstall failed:', err.message);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
});
|
package/lib/install.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import readline from 'node:readline';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
const PACKAGE_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
7
|
+
|
|
8
|
+
async function confirm(question) {
|
|
9
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
10
|
+
return new Promise((resolve) => {
|
|
11
|
+
rl.question(`${question} [y/N] `, (answer) => {
|
|
12
|
+
rl.close();
|
|
13
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function exists(p) {
|
|
19
|
+
return fs.access(p).then(() => true).catch(() => false);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async function copyDir(src, dest) {
|
|
23
|
+
await fs.cp(src, dest, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function install({ directory, yes }) {
|
|
27
|
+
const target = path.resolve(directory);
|
|
28
|
+
|
|
29
|
+
// Ensure target directory exists
|
|
30
|
+
await fs.mkdir(target, { recursive: true });
|
|
31
|
+
|
|
32
|
+
console.log(`\nInstalling TAS Kit into: ${target}\n`);
|
|
33
|
+
|
|
34
|
+
// Warn if .claude/ or .tas/ already exist
|
|
35
|
+
const claudeExists = await exists(path.join(target, '.claude'));
|
|
36
|
+
const tasExists = await exists(path.join(target, '.tas'));
|
|
37
|
+
|
|
38
|
+
if ((claudeExists || tasExists) && !yes) {
|
|
39
|
+
const existing = [claudeExists && '.claude/', tasExists && '.tas/'].filter(Boolean).join(', ');
|
|
40
|
+
console.warn(` WARNING: ${existing} already exist in target directory.`);
|
|
41
|
+
console.warn(` Existing files with the same names will be overwritten.\n`);
|
|
42
|
+
const ok = await confirm('Continue?');
|
|
43
|
+
if (!ok) {
|
|
44
|
+
console.log('Installation cancelled.');
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
console.log();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Copy .claude/
|
|
51
|
+
await copyDir(
|
|
52
|
+
path.join(PACKAGE_DIR, '.claude'),
|
|
53
|
+
path.join(target, '.claude')
|
|
54
|
+
);
|
|
55
|
+
console.log(' [ok] .claude/');
|
|
56
|
+
|
|
57
|
+
// Copy .tas/
|
|
58
|
+
await copyDir(
|
|
59
|
+
path.join(PACKAGE_DIR, '.tas'),
|
|
60
|
+
path.join(target, '.tas')
|
|
61
|
+
);
|
|
62
|
+
console.log(' [ok] .tas/');
|
|
63
|
+
|
|
64
|
+
// Copy CLAUDE-Example.md as CLAUDE.md (only if absent)
|
|
65
|
+
const claudeMdTarget = path.join(target, 'CLAUDE.md');
|
|
66
|
+
if (!(await exists(claudeMdTarget))) {
|
|
67
|
+
await fs.copyFile(
|
|
68
|
+
path.join(PACKAGE_DIR, 'CLAUDE-Example.md'),
|
|
69
|
+
claudeMdTarget
|
|
70
|
+
);
|
|
71
|
+
console.log(' [ok] CLAUDE.md (from CLAUDE-Example.md)');
|
|
72
|
+
} else {
|
|
73
|
+
console.log(' [--] CLAUDE.md already exists, skipped');
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Copy .env.example
|
|
77
|
+
await fs.copyFile(
|
|
78
|
+
path.join(PACKAGE_DIR, '.env.example'),
|
|
79
|
+
path.join(target, '.env.example')
|
|
80
|
+
);
|
|
81
|
+
console.log(' [ok] .env.example');
|
|
82
|
+
|
|
83
|
+
// Copy tas-example.yaml as tas.yaml (only if absent)
|
|
84
|
+
const tasYamlTarget = path.join(target, 'tas.yaml');
|
|
85
|
+
if (!(await exists(tasYamlTarget))) {
|
|
86
|
+
await fs.copyFile(
|
|
87
|
+
path.join(PACKAGE_DIR, '.tas', 'tas-example.yaml'),
|
|
88
|
+
tasYamlTarget
|
|
89
|
+
);
|
|
90
|
+
console.log(' [ok] tas.yaml (from .tas/tas-example.yaml)');
|
|
91
|
+
} else {
|
|
92
|
+
console.log(' [--] tas.yaml already exists, skipped');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Set executable bit on tas-ado.py (Unix/macOS)
|
|
96
|
+
if (process.platform !== 'win32') {
|
|
97
|
+
const adoPy = path.join(target, '.tas', 'tools', 'tas-ado.py');
|
|
98
|
+
if (await exists(adoPy)) {
|
|
99
|
+
await fs.chmod(adoPy, 0o755);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(`
|
|
104
|
+
TAS Kit installed successfully!
|
|
105
|
+
|
|
106
|
+
Next steps:
|
|
107
|
+
1. Edit CLAUDE.md — add your project's tech stack and conventions
|
|
108
|
+
2. Edit tas.yaml — set project name, team and ADO config
|
|
109
|
+
3. Create .env — add AZURE_DEVOPS_PAT (see .env.example)
|
|
110
|
+
4. Open Claude Code — run /tas-init to initialize your project
|
|
111
|
+
|
|
112
|
+
Docs: .tas/README.md
|
|
113
|
+
`);
|
|
114
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@torus-engineering/tas-kit",
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "Torus Agentic SDLC Kit — Claude Code commands, skills and workflows for modern AI-assisted SDLC",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"tas-kit": "bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin/",
|
|
11
|
+
"lib/",
|
|
12
|
+
".claude/",
|
|
13
|
+
".tas/",
|
|
14
|
+
"CLAUDE-Example.md",
|
|
15
|
+
".env.example"
|
|
16
|
+
],
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=18.0.0"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"claude-code",
|
|
22
|
+
"sdlc",
|
|
23
|
+
"ai",
|
|
24
|
+
"torus",
|
|
25
|
+
"tas",
|
|
26
|
+
"agentic"
|
|
27
|
+
],
|
|
28
|
+
"author": "Torus BelleSoft",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/torus-bellesoft/agentic-sdlc-kit.git"
|
|
33
|
+
}
|
|
34
|
+
}
|