oneshot-stack-team 0.1.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/README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# OneShot Team Stack
|
|
2
|
+
|
|
3
|
+
A team bundle that keeps the stable `oneshot-stack` core unchanged and adds reusable review, testing, and security skills.
|
|
4
|
+
|
|
5
|
+
## One-command setup
|
|
6
|
+
|
|
7
|
+
Run this from the root of any Git repository:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx --yes --prefer-online oneshot-stack-team@latest install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The installer adds:
|
|
14
|
+
|
|
15
|
+
- `.github/agents/oneshot.agent.md`
|
|
16
|
+
- `.github/hooks/scripts/`
|
|
17
|
+
- `.github/skills/code-review/SKILL.md`
|
|
18
|
+
- `.github/skills/testing/SKILL.md`
|
|
19
|
+
- `.github/skills/security-check/SKILL.md`
|
|
20
|
+
- `.vscode/mcp.json`
|
|
21
|
+
|
|
22
|
+
It uses local Ollama through the core OneShot MCP server. Ollama only prepares repository context and task guidance; Copilot writes the implementation.
|
|
23
|
+
|
|
24
|
+
## After installation
|
|
25
|
+
|
|
26
|
+
1. Reload VS Code with `Developer: Reload Window`.
|
|
27
|
+
2. Start a new Copilot Chat session.
|
|
28
|
+
3. Select the `OneShot` custom agent.
|
|
29
|
+
4. Paste a short feature request or a complete Jira ticket.
|
|
30
|
+
|
|
31
|
+
For implementation, debugging, refactoring, testing, code analysis, and ticket work, OneShot prepares `.oneshot/context.json` and `.oneshot/prompt.md` first. For simple explanations and locating questions, it answers directly without MCP preparation.
|
|
32
|
+
|
|
33
|
+
## Local model
|
|
34
|
+
|
|
35
|
+
The team bundle does not install Ollama automatically. Install Ollama once per computer and pull the default model:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
ollama pull qwen3:8b
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The MCP configuration uses `http://127.0.0.1:11434`. The model and all source analysis stay local.
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
The bundle is additive and does not replace the stable `oneshot-stack` package. Existing `.github/copilot-instructions.md`, `.github/agents/oneshot.agent.md`, hooks, and `.vscode/mcp.json` files are preserved by the core installer.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import fsSync from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { spawnSync } from 'node:child_process';
|
|
6
|
+
|
|
7
|
+
const packageRoot = path.resolve(new URL('..', import.meta.url).pathname);
|
|
8
|
+
const root = process.cwd();
|
|
9
|
+
const command = process.argv[2] || 'install';
|
|
10
|
+
|
|
11
|
+
function baseInstaller() {
|
|
12
|
+
const installer = path.join(packageRoot, 'node_modules', 'oneshot-stack', 'bin', 'oneshot-stack.js');
|
|
13
|
+
const result = spawnSync(process.execPath, [installer, 'install'], { cwd: root, stdio: 'inherit', env: process.env });
|
|
14
|
+
if (result.status !== 0) throw new Error('Base OneShot installation failed.');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async function installSkills() {
|
|
18
|
+
const destination = path.join(root, '.github', 'skills');
|
|
19
|
+
await fs.mkdir(destination, { recursive: true });
|
|
20
|
+
for (const skill of ['code-review', 'testing', 'security-check']) {
|
|
21
|
+
const source = path.join(packageRoot, 'config', 'skills', skill, 'SKILL.md');
|
|
22
|
+
const targetDir = path.join(destination, skill);
|
|
23
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
24
|
+
await fs.copyFile(source, path.join(targetDir, 'SKILL.md'));
|
|
25
|
+
console.log(`Added ${path.join(destination, skill, 'SKILL.md')}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async function main() {
|
|
30
|
+
if (command !== 'install') throw new Error('Usage: oneshot-stack-team install');
|
|
31
|
+
if (!fsSync.existsSync(path.join(root, '.git'))) console.warn('Warning: run this command from the repository root.');
|
|
32
|
+
baseInstaller();
|
|
33
|
+
await installSkills();
|
|
34
|
+
console.log('\nOneShot Team Stack installation complete. Reload VS Code and select OneShot.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
main().catch(error => { console.error(`Error: ${error.message}`); process.exitCode = 1; });
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Use when reviewing implementation changes for bugs, regressions, security risks, missing tests, and unmet acceptance criteria.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review
|
|
7
|
+
|
|
8
|
+
Review the diff before reporting completion.
|
|
9
|
+
|
|
10
|
+
- Prioritize correctness, regressions, data loss, security, and missing tests.
|
|
11
|
+
- Check every acceptance criterion against concrete implementation evidence.
|
|
12
|
+
- Check error, empty, loading, permission, persistence, and compatibility states where relevant.
|
|
13
|
+
- Report findings first, ordered by severity, with file references.
|
|
14
|
+
- Do not rewrite unrelated code.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-check
|
|
3
|
+
description: Use when implementation touches credentials, user data, external services, files, exports, authentication, or network requests.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security Check
|
|
7
|
+
|
|
8
|
+
Inspect the change for accidental exposure and unsafe boundaries.
|
|
9
|
+
|
|
10
|
+
- Never include secrets, tokens, cookies, or private keys in generated context, logs, exports, or responses.
|
|
11
|
+
- Validate untrusted input at external boundaries.
|
|
12
|
+
- Check authentication and authorization failures.
|
|
13
|
+
- Avoid real network calls in tests.
|
|
14
|
+
- Report residual security assumptions before completion.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testing
|
|
3
|
+
description: Use when adding or reviewing tests for a feature, bug fix, API, UI, persistence, or integration behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Testing
|
|
7
|
+
|
|
8
|
+
Create focused tests for each behavioral requirement.
|
|
9
|
+
|
|
10
|
+
- Cover happy paths, validation failures, empty states, loading states, errors, and permissions where applicable.
|
|
11
|
+
- Test public behavior through the narrowest stable boundary.
|
|
12
|
+
- Keep tests deterministic and isolated; mock external services.
|
|
13
|
+
- Run focused tests first, then the repository test and build commands.
|
|
14
|
+
- Report untested requirements explicitly.
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oneshot-stack-team",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Team workflow bundle for OneShot Stack with review, testing, and security skills",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"oneshot-stack-team": "bin/oneshot-stack-team.js"
|
|
8
|
+
},
|
|
9
|
+
"files": ["bin", "config", "README.md", "package.json"],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node --test"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"oneshot-stack": "0.6.13"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20"
|
|
18
|
+
},
|
|
19
|
+
"license": "MIT"
|
|
20
|
+
}
|