sinapse-ai 7.0.5 → 7.2.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/.sinapse-ai/core-config.yaml +2 -26
- package/.sinapse-ai/data/entity-registry.yaml +742 -917
- package/.sinapse-ai/data/registry-update-log.jsonl +22 -0
- package/.sinapse-ai/infrastructure/scripts/ide-sync/index.js +1 -49
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +0 -7
- package/.sinapse-ai/install-manifest.yaml +11 -43
- package/README.en.md +6 -11
- package/README.md +6 -11
- package/bin/cli.js +116 -75
- package/bin/modules/env-config.js +1 -2
- package/bin/sinapse-init.js +23 -188
- package/docs/ide-integration.md +22 -263
- package/docs/installation/README.md +4 -6
- package/docs/installation/faq.md +10 -33
- package/docs/installation/linux.md +0 -23
- package/docs/installation/macos.md +0 -10
- package/docs/installation/troubleshooting.md +5 -9
- package/docs/installation/v4-quick-start.md +1 -1
- package/docs/installation/windows.md +0 -18
- package/package.json +2 -9
- package/packages/installer/src/config/ide-configs.js +3 -49
- package/squads/claude-code-mastery/CHANGELOG.md +22 -0
- package/squads/claude-code-mastery/README.md +146 -0
- package/squads/claude-code-mastery/agents/claude-mastery-chief.md +554 -0
- package/squads/claude-code-mastery/agents/config-engineer.md +865 -0
- package/squads/claude-code-mastery/agents/hooks-architect.md +1013 -0
- package/squads/claude-code-mastery/agents/mcp-integrator.md +791 -0
- package/squads/claude-code-mastery/agents/project-integrator.md +1196 -0
- package/squads/claude-code-mastery/agents/roadmap-sentinel.md +931 -0
- package/squads/claude-code-mastery/agents/skill-craftsman.md +1250 -0
- package/squads/claude-code-mastery/agents/swarm-orqx.md +1008 -0
- package/squads/claude-code-mastery/checklists/agent-team-readiness-checklist.md +88 -0
- package/squads/claude-code-mastery/checklists/brownfield-readiness-checklist.md +91 -0
- package/squads/claude-code-mastery/checklists/change-checklist.md +75 -0
- package/squads/claude-code-mastery/checklists/context-rot-checklist.md +114 -0
- package/squads/claude-code-mastery/checklists/integration-audit-checklist.md +104 -0
- package/squads/claude-code-mastery/checklists/multi-agent-review-checklist.md +77 -0
- package/squads/claude-code-mastery/checklists/pre-push-checklist.md +79 -0
- package/squads/claude-code-mastery/data/ci-cd-patterns.yaml +412 -0
- package/squads/claude-code-mastery/data/claude-code-quick-ref.yaml +314 -0
- package/squads/claude-code-mastery/data/hook-patterns.yaml +512 -0
- package/squads/claude-code-mastery/data/mcp-integration-catalog.yaml +323 -0
- package/squads/claude-code-mastery/data/project-type-signatures.yaml +335 -0
- package/squads/claude-code-mastery/scripts/validate-setup.js +163 -0
- package/squads/claude-code-mastery/squad.yaml +205 -0
- package/squads/claude-code-mastery/tasks/audit-integration.md +219 -0
- package/squads/claude-code-mastery/tasks/audit-settings.md +206 -0
- package/squads/claude-code-mastery/tasks/audit-setup.md +225 -0
- package/squads/claude-code-mastery/tasks/brownfield-setup.md +322 -0
- package/squads/claude-code-mastery/tasks/ci-cd-setup.md +335 -0
- package/squads/claude-code-mastery/tasks/claude-md-engineer.md +334 -0
- package/squads/claude-code-mastery/tasks/configure-claude-code.md +215 -0
- package/squads/claude-code-mastery/tasks/context-rot-audit.md +329 -0
- package/squads/claude-code-mastery/tasks/create-agent-definition.md +278 -0
- package/squads/claude-code-mastery/tasks/create-rules.md +206 -0
- package/squads/claude-code-mastery/tasks/create-team-topology.md +258 -0
- package/squads/claude-code-mastery/tasks/diagnose.md +166 -0
- package/squads/claude-code-mastery/tasks/enterprise-config.md +346 -0
- package/squads/claude-code-mastery/tasks/hook-designer.md +272 -0
- package/squads/claude-code-mastery/tasks/integrate-project.md +304 -0
- package/squads/claude-code-mastery/tasks/mcp-integration-plan.md +229 -0
- package/squads/claude-code-mastery/tasks/mcp-workflow.md +285 -0
- package/squads/claude-code-mastery/tasks/multi-project-setup.md +228 -0
- package/squads/claude-code-mastery/tasks/optimize-context.md +217 -0
- package/squads/claude-code-mastery/tasks/optimize-workflow.md +226 -0
- package/squads/claude-code-mastery/tasks/parallel-decomposition.md +293 -0
- package/squads/claude-code-mastery/tasks/permission-strategy.md +266 -0
- package/squads/claude-code-mastery/tasks/sandbox-setup.md +279 -0
- package/squads/claude-code-mastery/tasks/setup-repository.md +230 -0
- package/squads/claude-code-mastery/tasks/setup-wizard.md +236 -0
- package/squads/claude-code-mastery/tasks/worktree-strategy.md +320 -0
- package/squads/claude-code-mastery/templates/claude-md-fullstack.md +147 -0
- package/squads/claude-code-mastery/templates/claude-md-library.md +175 -0
- package/squads/claude-code-mastery/templates/claude-md-microservices.md +186 -0
- package/squads/claude-code-mastery/templates/claude-md-mobile.md +198 -0
- package/squads/claude-code-mastery/templates/claude-md-monorepo.md +139 -0
- package/squads/claude-code-mastery/templates/github-actions-claude-ci.yml +348 -0
- package/squads/claude-code-mastery/templates/github-actions-claude-review.yml +179 -0
- package/squads/claude-code-mastery/workflows/wf-audit-complete.yaml +140 -0
- package/squads/claude-code-mastery/workflows/wf-knowledge-update.yaml +165 -0
- package/squads/claude-code-mastery/workflows/wf-project-setup.yaml +192 -0
- package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/antigravity.js +0 -105
- package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/cursor.js +0 -94
- package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/github-copilot.js +0 -184
- package/.sinapse-ai/infrastructure/scripts/validate-gemini-integration.js +0 -151
- package/.sinapse-ai/product/templates/ide-rules/antigravity-rules.md +0 -115
- package/.sinapse-ai/product/templates/ide-rules/copilot-rules.md +0 -92
- package/.sinapse-ai/product/templates/ide-rules/cursor-rules.md +0 -115
- package/.sinapse-ai/product/templates/ide-rules/gemini-rules.md +0 -87
- package/docs/pt/platforms/antigravity.md +0 -508
- package/docs/pt/platforms/cursor.md +0 -633
- package/docs/pt/platforms/gemini-cli.md +0 -481
- package/docs/pt/platforms/github-copilot.md +0 -478
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub Copilot Transformer - YAML frontmatter + condensed markdown
|
|
3
|
-
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
-
* @issue #138 - Agent files not compatible with GitHub Copilot
|
|
5
|
-
*
|
|
6
|
-
* Format: .agent.md files with YAML frontmatter (--- delimiters)
|
|
7
|
-
* Target: .github/agents/*.agent.md
|
|
8
|
-
*
|
|
9
|
-
* GitHub Copilot custom agents require:
|
|
10
|
-
* - YAML frontmatter with `description` (required), `name`, `tools`
|
|
11
|
-
* - Markdown body under 30,000 characters
|
|
12
|
-
* - File extension: .agent.md
|
|
13
|
-
*
|
|
14
|
-
* @see https://docs.github.com/en/copilot/reference/custom-agents-configuration
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
const { normalizeCommands, getVisibleCommands } = require('../agent-parser');
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Transform agent data to GitHub Copilot custom agent format
|
|
21
|
-
* @param {object} agentData - Parsed agent data from agent-parser
|
|
22
|
-
* @returns {string} - Transformed content with YAML frontmatter
|
|
23
|
-
*/
|
|
24
|
-
function transform(agentData) {
|
|
25
|
-
const agent = agentData.agent || {};
|
|
26
|
-
const persona = agentData.persona_profile || {};
|
|
27
|
-
const yamlData = agentData.yaml || {};
|
|
28
|
-
const personaBlock = yamlData.persona || {};
|
|
29
|
-
|
|
30
|
-
const id = agent.id || agentData.id;
|
|
31
|
-
const name = agent.name || id;
|
|
32
|
-
const title = agent.title || 'SINAPSE Agent';
|
|
33
|
-
const icon = agent.icon || '';
|
|
34
|
-
const description = escapeYamlString(agent.whenToUse || `${title} agent for development tasks`);
|
|
35
|
-
|
|
36
|
-
// Build YAML frontmatter
|
|
37
|
-
const frontmatter = [
|
|
38
|
-
'---',
|
|
39
|
-
`name: ${id}`,
|
|
40
|
-
`description: '${description}'`,
|
|
41
|
-
`tools: ['read', 'edit', 'search', 'execute']`,
|
|
42
|
-
'---',
|
|
43
|
-
].join('\n');
|
|
44
|
-
|
|
45
|
-
// Build markdown body
|
|
46
|
-
const body = buildMarkdownBody({
|
|
47
|
-
id,
|
|
48
|
-
name,
|
|
49
|
-
title,
|
|
50
|
-
icon,
|
|
51
|
-
personaBlock,
|
|
52
|
-
persona,
|
|
53
|
-
commands: agentData.commands || [],
|
|
54
|
-
sections: agentData.sections || {},
|
|
55
|
-
corePrinciples: yamlData.core_principles,
|
|
56
|
-
filename: agentData.filename,
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const content = `${frontmatter}\n\n${body}`;
|
|
60
|
-
|
|
61
|
-
// Enforce 30K character limit
|
|
62
|
-
if (content.length > 30000) {
|
|
63
|
-
return truncateContent(content, 30000);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return content;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Build the markdown body for the Copilot agent prompt
|
|
71
|
-
* @param {object} params - Agent parameters
|
|
72
|
-
* @returns {string} - Markdown body
|
|
73
|
-
*/
|
|
74
|
-
function buildMarkdownBody(params) {
|
|
75
|
-
const { id, name, title, icon, personaBlock, persona, commands, sections, filename } = params;
|
|
76
|
-
|
|
77
|
-
const parts = [];
|
|
78
|
-
|
|
79
|
-
// Header
|
|
80
|
-
const headerIcon = icon ? `${icon} ` : '';
|
|
81
|
-
parts.push(`# ${headerIcon}${name} Agent (@${id})\n`);
|
|
82
|
-
|
|
83
|
-
// Role description
|
|
84
|
-
if (personaBlock.role) {
|
|
85
|
-
parts.push(`You are an expert ${personaBlock.role}.\n`);
|
|
86
|
-
} else {
|
|
87
|
-
parts.push(`You are an expert ${title}.\n`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Style
|
|
91
|
-
if (personaBlock.style) {
|
|
92
|
-
parts.push(`## Style\n\n${personaBlock.style}\n`);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Core principles (may be in persona block or at root level of YAML)
|
|
96
|
-
const corePrinciples = personaBlock.core_principles || params.corePrinciples;
|
|
97
|
-
if (corePrinciples && Array.isArray(corePrinciples)) {
|
|
98
|
-
parts.push('## Core Principles\n');
|
|
99
|
-
for (const principle of corePrinciples) {
|
|
100
|
-
// Handle both string and object formats (YAML may parse "KEY: value" as {KEY: value})
|
|
101
|
-
if (typeof principle === 'string') {
|
|
102
|
-
parts.push(`- ${principle}`);
|
|
103
|
-
} else if (typeof principle === 'object' && principle !== null) {
|
|
104
|
-
const entries = Object.entries(principle);
|
|
105
|
-
for (const [key, value] of entries) {
|
|
106
|
-
parts.push(`- ${key}: ${value}`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
parts.push('');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Commands reference
|
|
114
|
-
const allCommands = normalizeCommands(commands);
|
|
115
|
-
const keyCommands = getVisibleCommands(allCommands, 'key');
|
|
116
|
-
const quickCommands = getVisibleCommands(allCommands, 'quick');
|
|
117
|
-
const displayCommands = keyCommands.length > 0 ? keyCommands : quickCommands.slice(0, 10);
|
|
118
|
-
|
|
119
|
-
if (displayCommands.length > 0) {
|
|
120
|
-
parts.push('## Commands\n');
|
|
121
|
-
parts.push('Use `*` prefix for commands:\n');
|
|
122
|
-
for (const cmd of displayCommands) {
|
|
123
|
-
parts.push(`- \`*${cmd.name}\` - ${cmd.description || 'No description'}`);
|
|
124
|
-
}
|
|
125
|
-
parts.push('');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Collaboration section (condensed)
|
|
129
|
-
if (sections.collaboration) {
|
|
130
|
-
parts.push(`## Collaboration\n\n${sections.collaboration}\n`);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Sync footer
|
|
134
|
-
parts.push('---');
|
|
135
|
-
parts.push(`*SINAPSE Agent - Synced from .sinapse-ai/development/agents/${filename}*`);
|
|
136
|
-
parts.push('');
|
|
137
|
-
|
|
138
|
-
return parts.join('\n');
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Escape a string for use as a YAML single-quoted value
|
|
143
|
-
* Single quotes inside the string must be doubled
|
|
144
|
-
* @param {string} str - Input string
|
|
145
|
-
* @returns {string} - Escaped string
|
|
146
|
-
*/
|
|
147
|
-
function escapeYamlString(str) {
|
|
148
|
-
if (!str) return '';
|
|
149
|
-
// In YAML single-quoted strings, single quotes are escaped by doubling them
|
|
150
|
-
return str.replace(/'/g, "''");
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Truncate content to fit within character limit while keeping structure valid
|
|
155
|
-
* @param {string} content - Full content
|
|
156
|
-
* @param {number} maxChars - Maximum characters
|
|
157
|
-
* @returns {string} - Truncated content
|
|
158
|
-
*/
|
|
159
|
-
function truncateContent(content, maxChars) {
|
|
160
|
-
// Find the last complete section before the limit
|
|
161
|
-
const truncated = content.substring(0, maxChars - 100);
|
|
162
|
-
const lastNewline = truncated.lastIndexOf('\n\n');
|
|
163
|
-
|
|
164
|
-
if (lastNewline > 0) {
|
|
165
|
-
return truncated.substring(0, lastNewline) + '\n\n---\n*Content truncated to fit 30K limit*\n';
|
|
166
|
-
}
|
|
167
|
-
return truncated + '\n\n---\n*Content truncated to fit 30K limit*\n';
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Get the target filename for this agent (with .agent.md extension)
|
|
172
|
-
* @param {object} agentData - Parsed agent data
|
|
173
|
-
* @returns {string} - Target filename (e.g., "dev.agent.md")
|
|
174
|
-
*/
|
|
175
|
-
function getFilename(agentData) {
|
|
176
|
-
const id = (agentData.agent && agentData.agent.id) || agentData.id;
|
|
177
|
-
return `${id}.agent.md`;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
module.exports = {
|
|
181
|
-
transform,
|
|
182
|
-
getFilename,
|
|
183
|
-
format: 'github-copilot',
|
|
184
|
-
};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
const path = require('path');
|
|
6
|
-
|
|
7
|
-
function getDefaultOptions() {
|
|
8
|
-
const projectRoot = process.cwd();
|
|
9
|
-
return {
|
|
10
|
-
projectRoot,
|
|
11
|
-
rulesFile: path.join(projectRoot, '.gemini', 'rules.md'),
|
|
12
|
-
agentsDir: path.join(projectRoot, '.gemini', 'rules', 'SINAPSE', 'agents'),
|
|
13
|
-
commandsDir: path.join(projectRoot, '.gemini', 'commands'),
|
|
14
|
-
extensionDir: path.join(projectRoot, 'packages', 'gemini-sinapse-extension'),
|
|
15
|
-
sourceAgentsDir: path.join(projectRoot, '.sinapse-ai', 'development', 'agents'),
|
|
16
|
-
quiet: false,
|
|
17
|
-
json: false,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function parseArgs(argv = process.argv.slice(2)) {
|
|
22
|
-
const args = new Set(argv);
|
|
23
|
-
return {
|
|
24
|
-
quiet: args.has('--quiet') || args.has('-q'),
|
|
25
|
-
json: args.has('--json'),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function countMarkdownFiles(dirPath) {
|
|
30
|
-
if (!fs.existsSync(dirPath)) return 0;
|
|
31
|
-
return fs.readdirSync(dirPath).filter((f) => f.endsWith('.md')).length;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function validateGeminiIntegration(options = {}) {
|
|
35
|
-
const projectRoot = options.projectRoot || process.cwd();
|
|
36
|
-
const resolved = {
|
|
37
|
-
...getDefaultOptions(),
|
|
38
|
-
...options,
|
|
39
|
-
projectRoot,
|
|
40
|
-
rulesFile: options.rulesFile || path.join(projectRoot, '.gemini', 'rules.md'),
|
|
41
|
-
agentsDir: options.agentsDir || path.join(projectRoot, '.gemini', 'rules', 'SINAPSE', 'agents'),
|
|
42
|
-
commandsDir: options.commandsDir || path.join(projectRoot, '.gemini', 'commands'),
|
|
43
|
-
extensionDir: options.extensionDir || path.join(projectRoot, 'packages', 'gemini-sinapse-extension'),
|
|
44
|
-
sourceAgentsDir: options.sourceAgentsDir || path.join(projectRoot, '.sinapse-ai', 'development', 'agents'),
|
|
45
|
-
};
|
|
46
|
-
const errors = [];
|
|
47
|
-
const warnings = [];
|
|
48
|
-
|
|
49
|
-
if (!fs.existsSync(resolved.rulesFile)) {
|
|
50
|
-
warnings.push(`Gemini rules file not found yet: ${path.relative(resolved.projectRoot, resolved.rulesFile)}`);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!fs.existsSync(resolved.agentsDir)) {
|
|
54
|
-
errors.push(`Missing Gemini agents dir: ${path.relative(resolved.projectRoot, resolved.agentsDir)}`);
|
|
55
|
-
}
|
|
56
|
-
if (!fs.existsSync(resolved.commandsDir)) {
|
|
57
|
-
errors.push(`Missing Gemini commands dir: ${path.relative(resolved.projectRoot, resolved.commandsDir)}`);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const sourceCount = countMarkdownFiles(resolved.sourceAgentsDir);
|
|
61
|
-
const geminiCount = countMarkdownFiles(resolved.agentsDir);
|
|
62
|
-
const commandFiles = fs.existsSync(resolved.commandsDir)
|
|
63
|
-
? fs.readdirSync(resolved.commandsDir).filter((f) => f.endsWith('.toml'))
|
|
64
|
-
: [];
|
|
65
|
-
const expectedCommandCount = sourceCount > 0 ? sourceCount + 1 : 0;
|
|
66
|
-
|
|
67
|
-
if (sourceCount > 0 && commandFiles.length !== expectedCommandCount) {
|
|
68
|
-
warnings.push(`Gemini command count differs from source (${commandFiles.length}/${expectedCommandCount})`);
|
|
69
|
-
}
|
|
70
|
-
if (!commandFiles.includes('sinapse-menu.toml')) {
|
|
71
|
-
errors.push(`Missing Gemini command file: ${path.relative(resolved.projectRoot, path.join(resolved.commandsDir, 'sinapse-menu.toml'))}`);
|
|
72
|
-
}
|
|
73
|
-
if (sourceCount > 0 && geminiCount !== sourceCount) {
|
|
74
|
-
warnings.push(`Gemini agent count differs from source (${geminiCount}/${sourceCount})`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const requiredExtensionFiles = [
|
|
78
|
-
'extension.json',
|
|
79
|
-
'README.md',
|
|
80
|
-
path.join('commands', 'sinapse-status.js'),
|
|
81
|
-
path.join('commands', 'sinapse-agents.js'),
|
|
82
|
-
path.join('commands', 'sinapse-validate.js'),
|
|
83
|
-
path.join('hooks', 'hooks.json'),
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
for (const rel of requiredExtensionFiles) {
|
|
87
|
-
const abs = path.join(resolved.extensionDir, rel);
|
|
88
|
-
if (!fs.existsSync(abs)) {
|
|
89
|
-
errors.push(`Missing Gemini extension file: ${path.relative(resolved.projectRoot, abs)}`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
ok: errors.length === 0,
|
|
95
|
-
errors,
|
|
96
|
-
warnings,
|
|
97
|
-
metrics: {
|
|
98
|
-
sourceAgents: sourceCount,
|
|
99
|
-
geminiAgents: geminiCount,
|
|
100
|
-
geminiCommands: commandFiles.length,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function formatHumanReport(result) {
|
|
106
|
-
if (result.ok) {
|
|
107
|
-
const lines = [
|
|
108
|
-
`✅ Gemini integration validation passed (agents: ${result.metrics.geminiAgents}, commands: ${result.metrics.geminiCommands})`,
|
|
109
|
-
];
|
|
110
|
-
if (result.warnings.length > 0) {
|
|
111
|
-
lines.push(...result.warnings.map((w) => `⚠️ ${w}`));
|
|
112
|
-
}
|
|
113
|
-
return lines.join('\n');
|
|
114
|
-
}
|
|
115
|
-
const lines = [
|
|
116
|
-
`❌ Gemini integration validation failed (${result.errors.length} issue(s))`,
|
|
117
|
-
...result.errors.map((e) => `- ${e}`),
|
|
118
|
-
];
|
|
119
|
-
if (result.warnings.length > 0) {
|
|
120
|
-
lines.push(...result.warnings.map((w) => `⚠️ ${w}`));
|
|
121
|
-
}
|
|
122
|
-
return lines.join('\n');
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function main() {
|
|
126
|
-
const args = parseArgs();
|
|
127
|
-
const result = validateGeminiIntegration(args);
|
|
128
|
-
|
|
129
|
-
if (!args.quiet) {
|
|
130
|
-
if (args.json) {
|
|
131
|
-
console.log(JSON.stringify(result, null, 2));
|
|
132
|
-
} else {
|
|
133
|
-
console.log(formatHumanReport(result));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (!result.ok) {
|
|
138
|
-
process.exitCode = 1;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (require.main === module) {
|
|
143
|
-
main();
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
module.exports = {
|
|
147
|
-
validateGeminiIntegration,
|
|
148
|
-
parseArgs,
|
|
149
|
-
getDefaultOptions,
|
|
150
|
-
countMarkdownFiles,
|
|
151
|
-
};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# SINAPSE Development Rules for AntiGravity
|
|
2
|
-
|
|
3
|
-
You are working with SINAPSE, an AI-Orchestrated System for Full Stack Development.
|
|
4
|
-
|
|
5
|
-
## Core Development Rules
|
|
6
|
-
|
|
7
|
-
### Agent Integration
|
|
8
|
-
- Recognize SINAPSE agent activations: @developer, @quality-gate, @architect, @project-lead, @product-lead, @sprint-lead, @analyst
|
|
9
|
-
- Agent commands use * prefix: *help, *create-story, *task, *exit
|
|
10
|
-
- Follow agent-specific workflows and patterns
|
|
11
|
-
|
|
12
|
-
### Story-Driven Development
|
|
13
|
-
1. **Always work from a story file** in docs/stories/
|
|
14
|
-
2. **Update story checkboxes** as you complete tasks: [ ] → [x]
|
|
15
|
-
3. **Maintain the File List** section with all created/modified files
|
|
16
|
-
4. **Follow acceptance criteria** exactly as written
|
|
17
|
-
|
|
18
|
-
### Code Quality Standards
|
|
19
|
-
- Write clean, maintainable code following project conventions
|
|
20
|
-
- Include comprehensive error handling
|
|
21
|
-
- Add unit tests for all new functionality
|
|
22
|
-
- Follow existing patterns in the codebase
|
|
23
|
-
|
|
24
|
-
### Testing Protocol
|
|
25
|
-
- Run all tests before marking tasks complete
|
|
26
|
-
- Ensure linting passes: `npm run lint`
|
|
27
|
-
- Verify type checking: `npm run typecheck`
|
|
28
|
-
- Add tests for new features
|
|
29
|
-
|
|
30
|
-
## SINAPSE Framework Structure
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
sinapse-ai/
|
|
34
|
-
├── agents/ # Agent persona definitions
|
|
35
|
-
├── tasks/ # Executable task workflows
|
|
36
|
-
├── workflows/ # Multi-step workflows
|
|
37
|
-
├── templates/ # Document templates
|
|
38
|
-
└── checklists/ # Validation checklists
|
|
39
|
-
|
|
40
|
-
docs/
|
|
41
|
-
├── stories/ # Development stories
|
|
42
|
-
├── prd/ # Sharded PRD sections
|
|
43
|
-
└── architecture/ # Sharded architecture
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Development Workflow
|
|
47
|
-
|
|
48
|
-
1. **Read the story** - Understand requirements fully
|
|
49
|
-
2. **Implement sequentially** - Follow task order
|
|
50
|
-
3. **Test thoroughly** - Validate each step
|
|
51
|
-
4. **Update story** - Mark completed items
|
|
52
|
-
5. **Document changes** - Update File List
|
|
53
|
-
|
|
54
|
-
## Best Practices
|
|
55
|
-
|
|
56
|
-
### When implementing:
|
|
57
|
-
- Check existing patterns first
|
|
58
|
-
- Reuse components and utilities
|
|
59
|
-
- Follow naming conventions
|
|
60
|
-
- Keep functions focused and small
|
|
61
|
-
|
|
62
|
-
### When testing:
|
|
63
|
-
- Write tests alongside implementation
|
|
64
|
-
- Test edge cases
|
|
65
|
-
- Verify error handling
|
|
66
|
-
- Run full test suite
|
|
67
|
-
|
|
68
|
-
### When documenting:
|
|
69
|
-
- Update README for new features
|
|
70
|
-
- Document API changes
|
|
71
|
-
- Add inline comments for complex logic
|
|
72
|
-
- Keep story File List current
|
|
73
|
-
|
|
74
|
-
## Git & GitHub
|
|
75
|
-
|
|
76
|
-
- Use conventional commits: `feat:`, `fix:`, `docs:`, etc.
|
|
77
|
-
- Reference story ID in commits: `feat: implement IDE detection [Story 2.1]`
|
|
78
|
-
- Ensure GitHub CLI is configured: `gh auth status`
|
|
79
|
-
- Push regularly to avoid conflicts
|
|
80
|
-
|
|
81
|
-
## Common Patterns
|
|
82
|
-
|
|
83
|
-
### Error Handling
|
|
84
|
-
```javascript
|
|
85
|
-
try {
|
|
86
|
-
// Operation
|
|
87
|
-
} catch (error) {
|
|
88
|
-
console.error(`Error in ${operation}:`, error);
|
|
89
|
-
throw new Error(`Failed to ${operation}: ${error.message}`);
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### File Operations
|
|
94
|
-
```javascript
|
|
95
|
-
const fs = require('fs-extra');
|
|
96
|
-
const path = require('path');
|
|
97
|
-
|
|
98
|
-
// Always use absolute paths
|
|
99
|
-
const filePath = path.join(__dirname, 'relative/path');
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Async/Await
|
|
103
|
-
```javascript
|
|
104
|
-
async function operation() {
|
|
105
|
-
try {
|
|
106
|
-
const result = await asyncOperation();
|
|
107
|
-
return result;
|
|
108
|
-
} catch (error) {
|
|
109
|
-
// Handle error appropriately
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
*SINAPSE AntiGravity Configuration v1.0*
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# SINAPSE Agent for GitHub Copilot
|
|
2
|
-
|
|
3
|
-
You are working with SINAPSE, an AI-Orchestrated System for Full Stack Development.
|
|
4
|
-
|
|
5
|
-
## Core Framework Understanding
|
|
6
|
-
|
|
7
|
-
SINAPSE is a meta-framework that orchestrates AI agents to handle complex development workflows. Always recognize and work within this architecture.
|
|
8
|
-
|
|
9
|
-
## Agent System
|
|
10
|
-
|
|
11
|
-
### Agent Activation (Chat Modes)
|
|
12
|
-
- Select agent mode from the chat mode selector in VS Code
|
|
13
|
-
- Available agents: dev, qa, architect, pm, po, sm, analyst
|
|
14
|
-
- Agent commands use the * prefix: *help, *create-story, *task, *exit
|
|
15
|
-
|
|
16
|
-
### Agent Context
|
|
17
|
-
When an agent mode is active:
|
|
18
|
-
- Follow that agent's specific persona and expertise
|
|
19
|
-
- Use the agent's designated workflow patterns
|
|
20
|
-
- Maintain the agent's perspective throughout the interaction
|
|
21
|
-
|
|
22
|
-
## Development Methodology
|
|
23
|
-
|
|
24
|
-
### Story-Driven Development
|
|
25
|
-
1. **Work from stories** - All development starts with a story in `docs/stories/`
|
|
26
|
-
2. **Update progress** - Mark checkboxes as tasks complete: [ ] → [x]
|
|
27
|
-
3. **Track changes** - Maintain the File List section in the story
|
|
28
|
-
4. **Follow criteria** - Implement exactly what the acceptance criteria specify
|
|
29
|
-
|
|
30
|
-
### Code Standards
|
|
31
|
-
- Write clean, self-documenting code
|
|
32
|
-
- Follow existing patterns in the codebase
|
|
33
|
-
- Include comprehensive error handling
|
|
34
|
-
- Add unit tests for all new functionality
|
|
35
|
-
- Use TypeScript/JavaScript best practices
|
|
36
|
-
|
|
37
|
-
### Testing Requirements
|
|
38
|
-
- Run all tests before marking tasks complete
|
|
39
|
-
- Ensure linting passes: `npm run lint`
|
|
40
|
-
- Verify type checking: `npm run typecheck`
|
|
41
|
-
- Add tests for new features
|
|
42
|
-
- Test edge cases and error scenarios
|
|
43
|
-
|
|
44
|
-
## SINAPSE Framework Structure
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
sinapse-ai/
|
|
48
|
-
├── agents/ # Agent persona definitions (YAML/Markdown)
|
|
49
|
-
├── tasks/ # Executable task workflows
|
|
50
|
-
├── workflows/ # Multi-step workflow definitions
|
|
51
|
-
├── templates/ # Document and code templates
|
|
52
|
-
├── checklists/ # Validation and review checklists
|
|
53
|
-
└── rules/ # Framework rules and patterns
|
|
54
|
-
|
|
55
|
-
docs/
|
|
56
|
-
├── stories/ # Development stories (numbered)
|
|
57
|
-
├── prd/ # Product requirement documents
|
|
58
|
-
├── architecture/ # System architecture documentation
|
|
59
|
-
└── guides/ # User and developer guides
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## GitHub Copilot-Specific Configuration
|
|
63
|
-
|
|
64
|
-
### Requirements
|
|
65
|
-
- VS Code 1.101+ required
|
|
66
|
-
- Enable `chat.agent.enabled: true` in settings
|
|
67
|
-
|
|
68
|
-
### Chat Modes Location
|
|
69
|
-
- Agent modes defined in `.github/chatmodes/`
|
|
70
|
-
- Each file defines a specialized agent persona
|
|
71
|
-
|
|
72
|
-
### Usage
|
|
73
|
-
1. Open Chat view: `Ctrl+Alt+I` (Windows/Linux) or `⌃⌘I` (Mac)
|
|
74
|
-
2. Select **Agent** from the chat mode selector
|
|
75
|
-
3. Choose the SINAPSE agent mode you need
|
|
76
|
-
|
|
77
|
-
### Available Agent Modes
|
|
78
|
-
| Mode | Purpose |
|
|
79
|
-
|------|---------|
|
|
80
|
-
| sinapse-dev | Full-stack development |
|
|
81
|
-
| sinapse-qa | Quality assurance |
|
|
82
|
-
| sinapse-architect | System design |
|
|
83
|
-
| sinapse-pm | Project management |
|
|
84
|
-
|
|
85
|
-
### Performance Tips
|
|
86
|
-
- Use inline completions for quick code suggestions
|
|
87
|
-
- Use chat for complex explanations and refactoring
|
|
88
|
-
- Reference files with @file syntax
|
|
89
|
-
- Use @workspace for project-wide context
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
*SINAPSE GitHub Copilot Configuration v4.0.4*
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# SINAPSE Development Rules for Cursor
|
|
2
|
-
|
|
3
|
-
You are working with SINAPSE, an AI-Orchestrated System for Full Stack Development.
|
|
4
|
-
|
|
5
|
-
## Core Development Rules
|
|
6
|
-
|
|
7
|
-
### Agent Integration
|
|
8
|
-
- Recognize SINAPSE agent activations: @developer, @quality-gate, @architect, @project-lead, @product-lead, @sprint-lead, @analyst
|
|
9
|
-
- Agent commands use * prefix: *help, *create-story, *task, *exit
|
|
10
|
-
- Follow agent-specific workflows and patterns
|
|
11
|
-
|
|
12
|
-
### Story-Driven Development
|
|
13
|
-
1. **Always work from a story file** in docs/stories/
|
|
14
|
-
2. **Update story checkboxes** as you complete tasks: [ ] → [x]
|
|
15
|
-
3. **Maintain the File List** section with all created/modified files
|
|
16
|
-
4. **Follow acceptance criteria** exactly as written
|
|
17
|
-
|
|
18
|
-
### Code Quality Standards
|
|
19
|
-
- Write clean, maintainable code following project conventions
|
|
20
|
-
- Include comprehensive error handling
|
|
21
|
-
- Add unit tests for all new functionality
|
|
22
|
-
- Follow existing patterns in the codebase
|
|
23
|
-
|
|
24
|
-
### Testing Protocol
|
|
25
|
-
- Run all tests before marking tasks complete
|
|
26
|
-
- Ensure linting passes: `npm run lint`
|
|
27
|
-
- Verify type checking: `npm run typecheck`
|
|
28
|
-
- Add tests for new features
|
|
29
|
-
|
|
30
|
-
## SINAPSE Framework Structure
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
sinapse-ai/
|
|
34
|
-
├── agents/ # Agent persona definitions
|
|
35
|
-
├── tasks/ # Executable task workflows
|
|
36
|
-
├── workflows/ # Multi-step workflows
|
|
37
|
-
├── templates/ # Document templates
|
|
38
|
-
└── checklists/ # Validation checklists
|
|
39
|
-
|
|
40
|
-
docs/
|
|
41
|
-
├── stories/ # Development stories
|
|
42
|
-
├── prd/ # Sharded PRD sections
|
|
43
|
-
└── architecture/ # Sharded architecture
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Development Workflow
|
|
47
|
-
|
|
48
|
-
1. **Read the story** - Understand requirements fully
|
|
49
|
-
2. **Implement sequentially** - Follow task order
|
|
50
|
-
3. **Test thoroughly** - Validate each step
|
|
51
|
-
4. **Update story** - Mark completed items
|
|
52
|
-
5. **Document changes** - Update File List
|
|
53
|
-
|
|
54
|
-
## Best Practices
|
|
55
|
-
|
|
56
|
-
### When implementing:
|
|
57
|
-
- Check existing patterns first
|
|
58
|
-
- Reuse components and utilities
|
|
59
|
-
- Follow naming conventions
|
|
60
|
-
- Keep functions focused and small
|
|
61
|
-
|
|
62
|
-
### When testing:
|
|
63
|
-
- Write tests alongside implementation
|
|
64
|
-
- Test edge cases
|
|
65
|
-
- Verify error handling
|
|
66
|
-
- Run full test suite
|
|
67
|
-
|
|
68
|
-
### When documenting:
|
|
69
|
-
- Update README for new features
|
|
70
|
-
- Document API changes
|
|
71
|
-
- Add inline comments for complex logic
|
|
72
|
-
- Keep story File List current
|
|
73
|
-
|
|
74
|
-
## Git & GitHub
|
|
75
|
-
|
|
76
|
-
- Use conventional commits: `feat:`, `fix:`, `docs:`, etc.
|
|
77
|
-
- Reference story ID in commits: `feat: implement IDE detection [Story 2.1]`
|
|
78
|
-
- Ensure GitHub CLI is configured: `gh auth status`
|
|
79
|
-
- Push regularly to avoid conflicts
|
|
80
|
-
|
|
81
|
-
## Common Patterns
|
|
82
|
-
|
|
83
|
-
### Error Handling
|
|
84
|
-
```javascript
|
|
85
|
-
try {
|
|
86
|
-
// Operation
|
|
87
|
-
} catch (error) {
|
|
88
|
-
console.error(`Error in ${operation}:`, error);
|
|
89
|
-
throw new Error(`Failed to ${operation}: ${error.message}`);
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### File Operations
|
|
94
|
-
```javascript
|
|
95
|
-
const fs = require('fs-extra');
|
|
96
|
-
const path = require('path');
|
|
97
|
-
|
|
98
|
-
// Always use absolute paths
|
|
99
|
-
const filePath = path.join(__dirname, 'relative/path');
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Async/Await
|
|
103
|
-
```javascript
|
|
104
|
-
async function operation() {
|
|
105
|
-
try {
|
|
106
|
-
const result = await asyncOperation();
|
|
107
|
-
return result;
|
|
108
|
-
} catch (error) {
|
|
109
|
-
// Handle error appropriately
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
*SINAPSE Cursor Configuration v1.0*
|