izanagi-ai 2.2.1 → 2.2.2
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/.manifest +529 -0
- package/.opencode/agent/agents.md +28 -0
- package/.opencode/agent/animation.md +2 -40
- package/.opencode/agent/architect.md +6 -0
- package/.opencode/agent/bug-hunter.md +6 -0
- package/.opencode/agent/database.md +6 -0
- package/.opencode/agent/devops.md +6 -0
- package/.opencode/agent/docs.md +6 -0
- package/.opencode/agent/pm.md +6 -0
- package/.opencode/agent/professor.md +6 -0
- package/.opencode/agent/security.md +6 -0
- package/.opencode/agent/senior-engineer.md +6 -0
- package/.opencode/agent/techlead.md +6 -0
- package/core/skill-resolver.json +52 -24
- package/dist/cli/commands/chat.d.ts +2 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +154 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +34 -1
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +8 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/scripts/organize-and-clean.d.ts +2 -0
- package/dist/scripts/organize-and-clean.d.ts.map +1 -0
- package/dist/scripts/organize-and-clean.js +64 -0
- package/dist/scripts/organize-and-clean.js.map +1 -0
- package/dist/scripts/update-resolver.d.ts +2 -0
- package/dist/scripts/update-resolver.d.ts.map +1 -0
- package/dist/scripts/update-resolver.js +21 -0
- package/dist/scripts/update-resolver.js.map +1 -0
- package/package.json +3 -2
- package/skills/ai-agent-dev/SKILL.md +1 -1
- package/skills/frontend-dev/SKILL.md +1 -1
- package/skills/i18n-l10n/SKILL.md +1 -1
- package/skills/qa/SKILL.md +2 -2
- package/skills/web-perf-seo/SKILL.md +1 -1
- package/skills/websocket-realtime/SKILL.md +3 -3
- /package/skills/{accessibility-reviewer.md → accessibility-reviewer/SKILL.md} +0 -0
- /package/skills/{agentic-coding.md → agentic-coding/SKILL.md} +0 -0
- /package/skills/{alternative-solution-generator.md → alternative-solution-generator/SKILL.md} +0 -0
- /package/skills/{breaking-change-detector.md → breaking-change-detector/SKILL.md} +0 -0
- /package/skills/{bug-hunter.md → bug-hunter/SKILL.md} +0 -0
- /package/skills/{bug-prevention.md → bug-prevention/SKILL.md} +0 -0
- /package/skills/{clean-code-validator.md → clean-code-validator/SKILL.md} +0 -0
- /package/skills/{code-auditor.md → code-auditor/SKILL.md} +0 -0
- /package/skills/{complexity-analyzer.md → complexity-analyzer/SKILL.md} +0 -0
- /package/skills/{confidence-estimator.md → confidence-estimator/SKILL.md} +0 -0
- /package/skills/{continuous-improvement.md → continuous-improvement/SKILL.md} +0 -0
- /package/skills/{continuous-learning-engine.md → continuous-learning-engine/SKILL.md} +0 -0
- /package/skills/{cto-advisor.md → cto-advisor/SKILL.md} +0 -0
- /package/skills/{debug-specialist.md → debug-specialist/SKILL.md} +0 -0
- /package/skills/{dependency-analyzer.md → dependency-analyzer/SKILL.md} +0 -0
- /package/skills/{design-pattern-advisor.md → design-pattern-advisor/SKILL.md} +0 -0
- /package/skills/{documentation-writer.md → documentation-writer/SKILL.md} +0 -0
- /package/skills/{dry-kiss-yagni-validator.md → dry-kiss-yagni-validator/SKILL.md} +0 -0
- /package/skills/{er-diagram-builder.md → er-diagram-builder/SKILL.md} +0 -0
- /package/skills/{hallucination-detection.md → hallucination-detection/SKILL.md} +0 -0
- /package/skills/{logging-expert.md → logging-expert/SKILL.md} +0 -0
- /package/skills/{mcp-server-dev.md → mcp-server-dev/SKILL.md} +0 -0
- /package/skills/{monitoring-specialist.md → monitoring-specialist/SKILL.md} +0 -0
- /package/skills/{observability-expert.md → observability-expert/SKILL.md} +0 -0
- /package/skills/{performance-optimizer.md → performance-optimizer/SKILL.md} +0 -0
- /package/skills/{principal-engineer.md → principal-engineer/SKILL.md} +0 -0
- /package/skills/{project-manager.md → project-manager/SKILL.md} +0 -0
- /package/skills/{prompt-engineering.md → prompt-engineering/SKILL.md} +0 -0
- /package/skills/{readme-generator.md → readme-generator/SKILL.md} +0 -0
- /package/skills/{refactoring-specialist.md → refactoring-specialist/SKILL.md} +0 -0
- /package/skills/{release-planner.md → release-planner/SKILL.md} +0 -0
- /package/skills/{requirement-analyzer.md → requirement-analyzer/SKILL.md} +0 -0
- /package/skills/{risk-analyzer.md → risk-analyzer/SKILL.md} +0 -0
- /package/skills/{root-cause-analyzer.md → root-cause-analyzer/SKILL.md} +0 -0
- /package/skills/{scalability-expert.md → scalability-expert/SKILL.md} +0 -0
- /package/skills/{self-correction.md → self-correction/SKILL.md} +0 -0
- /package/skills/{self-critique.md → self-critique/SKILL.md} +0 -0
- /package/skills/{senior-code-reviewer.md → senior-code-reviewer/SKILL.md} +0 -0
- /package/skills/{sequence-diagram-builder.md → sequence-diagram-builder/SKILL.md} +0 -0
- /package/skills/{software-architect.md → software-architect/SKILL.md} +0 -0
- /package/skills/{solid-validator.md → solid-validator/SKILL.md} +0 -0
- /package/skills/{staff-engineer.md → staff-engineer/SKILL.md} +0 -0
- /package/skills/{task-planner.md → task-planner/SKILL.md} +0 -0
- /package/skills/{tech-lead.md → tech-lead/SKILL.md} +0 -0
- /package/skills/{technical-debt-analyzer.md → technical-debt-analyzer/SKILL.md} +0 -0
- /package/skills/{technical-writer.md → technical-writer/SKILL.md} +0 -0
- /package/skills/{tradeoff-analyzer.md → tradeoff-analyzer/SKILL.md} +0 -0
- /package/skills/{uml-generator.md → uml-generator/SKILL.md} +0 -0
- /package/skills/{ux-reviewer.md → ux-reviewer/SKILL.md} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const rootDir = process.cwd();
|
|
4
|
+
const skillsDir = path.join(rootDir, 'skills');
|
|
5
|
+
console.log('=== Izanagi AI Framework Organizer & Cleaner ===\n');
|
|
6
|
+
// 1. Organizar skills soltas em skills/*.md para skills/<name>/SKILL.md
|
|
7
|
+
if (fs.existsSync(skillsDir)) {
|
|
8
|
+
const items = fs.readdirSync(skillsDir);
|
|
9
|
+
for (const item of items) {
|
|
10
|
+
if (item.endsWith('.md') && item !== 'INDEX.md') {
|
|
11
|
+
const skillName = item.replace(/\.md$/, '');
|
|
12
|
+
const srcPath = path.join(skillsDir, item);
|
|
13
|
+
const destDir = path.join(skillsDir, skillName);
|
|
14
|
+
const destPath = path.join(destDir, 'SKILL.md');
|
|
15
|
+
if (!fs.existsSync(destDir)) {
|
|
16
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
if (!fs.existsSync(destPath)) {
|
|
19
|
+
const content = fs.readFileSync(srcPath, 'utf-8');
|
|
20
|
+
fs.writeFileSync(destPath, content, 'utf-8');
|
|
21
|
+
console.log(`✔ Moved loose skill: ${item} -> skills/${skillName}/SKILL.md`);
|
|
22
|
+
}
|
|
23
|
+
fs.unlinkSync(srcPath);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// 2. Limpar referências indesejadas (Enterprise, Associações específicas)
|
|
28
|
+
const searchDirs = [rootDir];
|
|
29
|
+
const excludeDirs = ['node_modules', '.git', 'dist', 'site'];
|
|
30
|
+
function cleanFiles(dir) {
|
|
31
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
const fullPath = path.join(dir, entry.name);
|
|
34
|
+
if (entry.isDirectory()) {
|
|
35
|
+
if (excludeDirs.includes(entry.name))
|
|
36
|
+
continue;
|
|
37
|
+
cleanFiles(fullPath);
|
|
38
|
+
}
|
|
39
|
+
else if (entry.isFile() && (entry.name.endsWith('.md') || entry.name.endsWith('.json') || entry.name.endsWith('.ts'))) {
|
|
40
|
+
let content = fs.readFileSync(fullPath, 'utf-8');
|
|
41
|
+
let modified = false;
|
|
42
|
+
// Substituições para remover referências específicas
|
|
43
|
+
const replacements = [
|
|
44
|
+
{ find: /Enterprise Organization System/gi, replace: 'Enterprise Organization System' },
|
|
45
|
+
{ find: /Enterprise/g, replace: 'Enterprise' },
|
|
46
|
+
{ find: /portal\.example\.com/g, replace: 'api.enterprise.com' },
|
|
47
|
+
{ find: /enterprise-tools/g, replace: 'enterprise-tools' }
|
|
48
|
+
];
|
|
49
|
+
for (const r of replacements) {
|
|
50
|
+
if (r.find.test(content)) {
|
|
51
|
+
content = content.replace(r.find, r.replace);
|
|
52
|
+
modified = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (modified) {
|
|
56
|
+
fs.writeFileSync(fullPath, content, 'utf-8');
|
|
57
|
+
console.log(`✔ Cleaned references in: ${path.relative(rootDir, fullPath)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
cleanFiles(rootDir);
|
|
63
|
+
console.log('\n✔ Framework organization and cleanup completed successfully!');
|
|
64
|
+
//# sourceMappingURL=organize-and-clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organize-and-clean.js","sourceRoot":"","sources":["../../src/scripts/organize-and-clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-resolver.d.ts","sourceRoot":"","sources":["../../src/scripts/update-resolver.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const rootDir = process.cwd();
|
|
4
|
+
const resolverPath = path.join(rootDir, 'core', 'skill-resolver.json');
|
|
5
|
+
const skillsDir = path.join(rootDir, 'skills');
|
|
6
|
+
const resolver = JSON.parse(fs.readFileSync(resolverPath, 'utf-8'));
|
|
7
|
+
if (fs.existsSync(skillsDir)) {
|
|
8
|
+
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
9
|
+
for (const entry of entries) {
|
|
10
|
+
if (entry.isDirectory() && entry.name !== 'INDEX.md') {
|
|
11
|
+
const skillName = entry.name;
|
|
12
|
+
const skillFile = path.join(skillsDir, skillName, 'SKILL.md');
|
|
13
|
+
if (fs.existsSync(skillFile)) {
|
|
14
|
+
resolver.aliases[skillName] = `skills/${skillName}/SKILL`;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
fs.writeFileSync(resolverPath, JSON.stringify(resolver, null, 2), 'utf-8');
|
|
20
|
+
console.log('✔ Updated core/skill-resolver.json with all skill paths!');
|
|
21
|
+
//# sourceMappingURL=update-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-resolver.js","sourceRoot":"","sources":["../../src/scripts/update-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,SAAS,QAAQ,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "izanagi-ai",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Izanagi AI - Modular Skill-Oriented AI Prompt & Agent Framework for Autonomous Software Engineering",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
"RULES.md",
|
|
33
33
|
"AGENTS.md",
|
|
34
34
|
"CHANGELOG.md",
|
|
35
|
-
"ROADMAP.md"
|
|
35
|
+
"ROADMAP.md",
|
|
36
|
+
".manifest"
|
|
36
37
|
],
|
|
37
38
|
"scripts": {
|
|
38
39
|
"build": "tsc",
|
|
@@ -96,7 +96,7 @@ const workflow = new StateGraph({ channels: {} })
|
|
|
96
96
|
```tsx
|
|
97
97
|
import { Server } from "@modelcontextprotocol/sdk";
|
|
98
98
|
|
|
99
|
-
const server = new Server("
|
|
99
|
+
const server = new Server("enterprise-tools", {
|
|
100
100
|
capabilities: { tools: {} },
|
|
101
101
|
});
|
|
102
102
|
|
|
@@ -12,7 +12,7 @@ description: |
|
|
|
12
12
|
|
|
13
13
|
## 🧑💻 Perfil
|
|
14
14
|
|
|
15
|
-
Você é um **Desenvolvedor Frontend Sênior** com 8+ anos de experiência em React, Next.js e Tailwind CSS.
|
|
15
|
+
Você é um **Desenvolvedor Frontend Sênior** com 8+ anos de experiência em React, Next.js e Tailwind CSS.
|
|
16
16
|
|
|
17
17
|
### Sua Expertise:
|
|
18
18
|
- React 18 com Server Components e Client Components
|
|
@@ -56,7 +56,7 @@ export default createMiddleware({
|
|
|
56
56
|
},
|
|
57
57
|
"home": {
|
|
58
58
|
"title": "Bem-vindo ao Portal",
|
|
59
|
-
"description": "
|
|
59
|
+
"description": "Enterprise Organization System"
|
|
60
60
|
},
|
|
61
61
|
"common": {
|
|
62
62
|
"loading": "Carregando...",
|
package/skills/qa/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qa
|
|
3
3
|
description: |
|
|
4
|
-
Skill de Quality Assurance para o
|
|
4
|
+
Skill de Quality Assurance para o NexusAI. Contém checklist completo de qualidade
|
|
5
5
|
de código, validações de acessibilidade, performance, segurança e responsividade.
|
|
6
6
|
Use esta skill para auditar código existente ou validar alterações antes de merge/deploy.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Skill QA
|
|
9
|
+
# Skill QA
|
|
10
10
|
|
|
11
11
|
## ✅ Checklist de Qualidade de Código
|
|
12
12
|
|
|
@@ -70,7 +70,7 @@ import Head from "next/head";
|
|
|
70
70
|
<meta property="og:title" content={pageTitle} />
|
|
71
71
|
<meta property="og:description" content={pageDescription} />
|
|
72
72
|
<meta property="og:image" content={ogImage} />
|
|
73
|
-
<link rel="canonical" href={`https://
|
|
73
|
+
<link rel="canonical" href={`https://api.enterprise.com${path}`} />
|
|
74
74
|
</Head>
|
|
75
75
|
```
|
|
76
76
|
|
|
@@ -36,7 +36,7 @@ Client → EventSource → Server → text/event-stream → Client
|
|
|
36
36
|
|
|
37
37
|
### WebSocket Nativo
|
|
38
38
|
```tsx
|
|
39
|
-
const ws = new WebSocket("wss://
|
|
39
|
+
const ws = new WebSocket("wss://api.enterprise.com/api/ws");
|
|
40
40
|
|
|
41
41
|
ws.onopen = () => ws.send(JSON.stringify({ type: "subscribe", channel: "notifications" }));
|
|
42
42
|
ws.onmessage = (event) => {
|
|
@@ -52,7 +52,7 @@ ws.onclose = () => reconnect();
|
|
|
52
52
|
import { Server } from "socket.io";
|
|
53
53
|
|
|
54
54
|
const io = new Server(httpServer, {
|
|
55
|
-
cors: { origin: "https://
|
|
55
|
+
cors: { origin: "https://api.enterprise.com" },
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
io.on("connection", (socket) => {
|
|
@@ -62,7 +62,7 @@ io.on("connection", (socket) => {
|
|
|
62
62
|
|
|
63
63
|
// Client
|
|
64
64
|
import { io } from "socket.io-client";
|
|
65
|
-
const socket = io("wss://
|
|
65
|
+
const socket = io("wss://api.enterprise.com");
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
---
|
|
File without changes
|
|
File without changes
|
/package/skills/{alternative-solution-generator.md → alternative-solution-generator/SKILL.md}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|