@kleber.mottajr/juninho 1.0.0-alpha.1
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 +52 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +46 -0
- package/dist/cli.js.map +1 -0
- package/dist/installer.d.ts +5 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +85 -0
- package/dist/installer.js.map +1 -0
- package/dist/templates/agents.d.ts +2 -0
- package/dist/templates/agents.d.ts.map +1 -0
- package/dist/templates/agents.js +510 -0
- package/dist/templates/agents.js.map +1 -0
- package/dist/templates/commands.d.ts +2 -0
- package/dist/templates/commands.d.ts.map +1 -0
- package/dist/templates/commands.js +290 -0
- package/dist/templates/commands.js.map +1 -0
- package/dist/templates/docs.d.ts +3 -0
- package/dist/templates/docs.d.ts.map +1 -0
- package/dist/templates/docs.js +304 -0
- package/dist/templates/docs.js.map +1 -0
- package/dist/templates/plugins.d.ts +2 -0
- package/dist/templates/plugins.d.ts.map +1 -0
- package/dist/templates/plugins.js +470 -0
- package/dist/templates/plugins.js.map +1 -0
- package/dist/templates/skills.d.ts +2 -0
- package/dist/templates/skills.d.ts.map +1 -0
- package/dist/templates/skills.js +425 -0
- package/dist/templates/skills.js.map +1 -0
- package/dist/templates/state.d.ts +2 -0
- package/dist/templates/state.d.ts.map +1 -0
- package/dist/templates/state.js +97 -0
- package/dist/templates/state.js.map +1 -0
- package/dist/templates/tools.d.ts +2 -0
- package/dist/templates/tools.d.ts.map +1 -0
- package/dist/templates/tools.js +424 -0
- package/dist/templates/tools.js.map +1 -0
- package/package.json +20 -0
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# juninho
|
|
2
|
+
|
|
3
|
+
Bootstrap the **Agentic Coding Framework** (framework.md) into any [OpenCode](https://opencode.ai) project in a single command.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @kleber.mottajr/juninho
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Navigate to your project
|
|
15
|
+
cd my-opencode-project
|
|
16
|
+
|
|
17
|
+
# Run setup — one command, everything configured
|
|
18
|
+
juninho setup
|
|
19
|
+
|
|
20
|
+
# Output:
|
|
21
|
+
# [juninho] Installing Agentic Coding Framework...
|
|
22
|
+
# [juninho] ✓ Framework installed successfully!
|
|
23
|
+
# [juninho] Open OpenCode — /plan, /spec and /implement are ready.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## What it does
|
|
27
|
+
|
|
28
|
+
`juninho setup` automatically creates:
|
|
29
|
+
|
|
30
|
+
- **7 agents** in `.opencode/agents/` (planner, spec-writer, implementer, validator, reviewer, plan-reviewer, unify)
|
|
31
|
+
- **5 skills** in `.opencode/skills/` (test-writing, page-creation, api-route-creation, server-action-creation, schema-migration)
|
|
32
|
+
- **10 plugins** in `.opencode/plugins/` (auto-discovered by OpenCode)
|
|
33
|
+
- **4 tools** in `.opencode/tools/` (find-pattern, next-version, lsp, ast-grep)
|
|
34
|
+
- **7 slash commands** in `.opencode/commands/` (/plan, /spec, /implement, /init-deep, /start-work, /handoff, /ulw-loop)
|
|
35
|
+
- **State files** for persistent context and execution tracking
|
|
36
|
+
- **Docs scaffold** with AGENTS.md, domain index, and manifest
|
|
37
|
+
|
|
38
|
+
Then patches `opencode.json` with agent definitions and Context7 MCP.
|
|
39
|
+
|
|
40
|
+
## Idempotency
|
|
41
|
+
|
|
42
|
+
Running `juninho setup` twice is safe — it detects `.opencode/.juninho-installed` and skips if already configured. Use `--force` to reinstall.
|
|
43
|
+
|
|
44
|
+
## Re-install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
juninho setup --force
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## License
|
|
51
|
+
|
|
52
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const installer_js_1 = require("./installer.js");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
const command = args[0] ?? "setup";
|
|
11
|
+
const forceFlag = args.includes("--force");
|
|
12
|
+
const targetDir = args.find(a => !a.startsWith("--") && a !== command) ?? process.cwd();
|
|
13
|
+
if (command === "setup") {
|
|
14
|
+
(0, installer_js_1.runSetup)(path_1.default.resolve(targetDir), { force: forceFlag })
|
|
15
|
+
.then(() => process.exit(0))
|
|
16
|
+
.catch((e) => {
|
|
17
|
+
console.error("[juninho] Error:", e.message);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else if (command === "--help" || command === "-h") {
|
|
22
|
+
console.log(`
|
|
23
|
+
juninho — Agentic Coding Framework bootstrapper for OpenCode
|
|
24
|
+
|
|
25
|
+
Usage:
|
|
26
|
+
juninho [setup] [project-dir] [--force]
|
|
27
|
+
|
|
28
|
+
Commands:
|
|
29
|
+
setup Install the framework into a project (default)
|
|
30
|
+
|
|
31
|
+
Options:
|
|
32
|
+
--force Reinstall even if already configured
|
|
33
|
+
--help Show this help message
|
|
34
|
+
|
|
35
|
+
Examples:
|
|
36
|
+
juninho setup
|
|
37
|
+
juninho setup ./my-project
|
|
38
|
+
juninho setup --force
|
|
39
|
+
`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.error(`[juninho] Unknown command: ${command}`);
|
|
43
|
+
console.error("Run 'juninho --help' for usage.");
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,iDAAyC;AACzC,gDAAuB;AAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAA;AAClC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;AAEvF,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IACxB,IAAA,uBAAQ,EAAC,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SACpD,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;QAClB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;CAiBb,CAAC,CAAA;AACF,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAA;IACtD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5F"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runSetup = runSetup;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const agents_js_1 = require("./templates/agents.js");
|
|
10
|
+
const skills_js_1 = require("./templates/skills.js");
|
|
11
|
+
const plugins_js_1 = require("./templates/plugins.js");
|
|
12
|
+
const tools_js_1 = require("./templates/tools.js");
|
|
13
|
+
const commands_js_1 = require("./templates/commands.js");
|
|
14
|
+
const state_js_1 = require("./templates/state.js");
|
|
15
|
+
const docs_js_1 = require("./templates/docs.js");
|
|
16
|
+
async function runSetup(projectDir, options = {}) {
|
|
17
|
+
const marker = path_1.default.join(projectDir, ".opencode", ".juninho-installed");
|
|
18
|
+
if ((0, fs_1.existsSync)(marker) && !options.force) {
|
|
19
|
+
console.log("[juninho] Framework already installed. Use --force to reinstall.");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log("[juninho] Installing Agentic Coding Framework...");
|
|
23
|
+
console.log(`[juninho] Target: ${projectDir}`);
|
|
24
|
+
// Step 1: Create directory structure
|
|
25
|
+
createDirectories(projectDir);
|
|
26
|
+
console.log("[juninho] ✓ Directories created");
|
|
27
|
+
// Step 2: Write agents
|
|
28
|
+
(0, agents_js_1.writeAgents)(projectDir);
|
|
29
|
+
console.log("[juninho] ✓ Agents created (7)");
|
|
30
|
+
// Step 3: Write skills
|
|
31
|
+
(0, skills_js_1.writeSkills)(projectDir);
|
|
32
|
+
console.log("[juninho] ✓ Skills created (5)");
|
|
33
|
+
// Step 4: Write plugins
|
|
34
|
+
(0, plugins_js_1.writePlugins)(projectDir);
|
|
35
|
+
console.log("[juninho] ✓ Plugins created (10)");
|
|
36
|
+
// Step 5: Write tools
|
|
37
|
+
(0, tools_js_1.writeTools)(projectDir);
|
|
38
|
+
console.log("[juninho] ✓ Tools created (4)");
|
|
39
|
+
// Step 6: Write commands
|
|
40
|
+
(0, commands_js_1.writeCommands)(projectDir);
|
|
41
|
+
console.log("[juninho] ✓ Commands created (7)");
|
|
42
|
+
// Step 7: Write state files
|
|
43
|
+
(0, state_js_1.writeState)(projectDir);
|
|
44
|
+
console.log("[juninho] ✓ State files created");
|
|
45
|
+
// Step 8: Write docs
|
|
46
|
+
(0, docs_js_1.writeDocs)(projectDir);
|
|
47
|
+
console.log("[juninho] ✓ Docs scaffold created");
|
|
48
|
+
// Step 9: Patch opencode.json
|
|
49
|
+
(0, docs_js_1.patchOpencodeJson)(projectDir);
|
|
50
|
+
console.log("[juninho] ✓ opencode.json patched");
|
|
51
|
+
// Step 10: Write marker
|
|
52
|
+
(0, fs_1.writeFileSync)(marker, new Date().toISOString());
|
|
53
|
+
console.log("");
|
|
54
|
+
console.log("[juninho] ✓ Framework installed successfully!");
|
|
55
|
+
console.log("[juninho] Open OpenCode — /plan, /spec and /implement are ready.");
|
|
56
|
+
console.log("[juninho] Agents available: @planner, @spec-writer, @implementer, @validator, @reviewer, @unify");
|
|
57
|
+
}
|
|
58
|
+
function createDirectories(projectDir) {
|
|
59
|
+
const dirs = [
|
|
60
|
+
".opencode",
|
|
61
|
+
".opencode/agents",
|
|
62
|
+
".opencode/skills",
|
|
63
|
+
".opencode/skills/test-writing",
|
|
64
|
+
".opencode/skills/page-creation",
|
|
65
|
+
".opencode/skills/api-route-creation",
|
|
66
|
+
".opencode/skills/server-action-creation",
|
|
67
|
+
".opencode/skills/schema-migration",
|
|
68
|
+
".opencode/plugins",
|
|
69
|
+
".opencode/tools",
|
|
70
|
+
".opencode/commands",
|
|
71
|
+
".opencode/state",
|
|
72
|
+
"docs",
|
|
73
|
+
"docs/principles",
|
|
74
|
+
"docs/domain",
|
|
75
|
+
"docs/specs",
|
|
76
|
+
"worktrees",
|
|
77
|
+
];
|
|
78
|
+
for (const dir of dirs) {
|
|
79
|
+
const fullPath = path_1.default.join(projectDir, dir);
|
|
80
|
+
if (!(0, fs_1.existsSync)(fullPath)) {
|
|
81
|
+
(0, fs_1.mkdirSync)(fullPath, { recursive: true });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUpD"}
|