code-ai-installer 1.1.4 → 1.1.5
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 +4 -0
- package/dist/banner.d.ts +4 -0
- package/dist/banner.js +35 -0
- package/dist/index.js +39 -0
- package/dist/sourceResolver.d.ts +2 -0
- package/dist/sourceResolver.js +27 -5
- package/dist/types.d.ts +1 -0
- package/locales/en/.agents/a11y_baseline/SKILL.md +41 -0
- package/locales/en/.agents/adr_log/SKILL.md +69 -0
- package/locales/en/.agents/api_contract_compliance_review/SKILL.md +18 -0
- package/locales/en/.agents/api_contracts/SKILL.md +42 -0
- package/locales/en/.agents/architecture_compliance_review/SKILL.md +17 -0
- package/locales/en/.agents/architecture_doc/SKILL.md +92 -0
- package/locales/en/.agents/board/SKILL.md +43 -0
- package/locales/en/.agents/cloud_infrastructure_security/SKILL.md +68 -0
- package/locales/en/.agents/code_review_checklist/SKILL.md +47 -0
- package/locales/en/.agents/current_state_analysis/SKILL.md +44 -0
- package/locales/en/.agents/data_model/SKILL.md +40 -0
- package/locales/en/.agents/dependency_supply_chain_review/SKILL.md +20 -0
- package/locales/en/.agents/deployment_ci_plan/SKILL.md +51 -0
- package/locales/en/.agents/design_intake/SKILL.md +71 -0
- package/locales/en/.agents/design_parity_review/SKILL.md +73 -0
- package/locales/en/.agents/design_systems/SKILL.md +15 -0
- package/locales/en/.agents/dev_reference_snippets/SKILL.md +397 -0
- package/locales/en/.agents/docker_kubernetes_architecture/SKILL.md +144 -0
- package/locales/en/.agents/es2025_beast_practices/SKILL.md +15 -0
- package/locales/en/.agents/gates/SKILL.md +35 -0
- package/locales/en/.agents/go_beast_practices/SKILL.md +23 -0
- package/locales/en/.agents/handoff/SKILL.md +52 -0
- package/locales/en/.agents/k8s_manifests_conventions/SKILL.md +175 -0
- package/locales/en/.agents/memory/SKILL.md +29 -0
- package/locales/en/.agents/mongodb_mongoose_best_practices/SKILL.md +233 -0
- package/locales/en/.agents/node_express_beast_practices/SKILL.md +30 -0
- package/locales/en/.agents/observability_logging/SKILL.md +16 -0
- package/locales/en/.agents/observability_plan/SKILL.md +38 -0
- package/locales/en/.agents/observability_review/SKILL.md +20 -0
- package/locales/en/.agents/performance_review_baseline/SKILL.md +17 -0
- package/locales/en/.agents/pm_backlog/SKILL.md +32 -0
- package/locales/en/.agents/pm_interview/SKILL.md +56 -0
- package/locales/en/.agents/pm_prd/SKILL.md +56 -0
- package/locales/en/.agents/qa_api_contract_tests/SKILL.md +16 -0
- package/locales/en/.agents/qa_e2e_playwright/SKILL.md +0 -0
- package/locales/en/.agents/qa_manual_run/SKILL.md +16 -0
- package/locales/en/.agents/qa_security_smoke_tests/SKILL.md +14 -0
- package/locales/en/.agents/qa_test_plan/SKILL.md +20 -0
- package/locales/en/.agents/qa_ui_a11y_smoke/SKILL.md +12 -0
- package/locales/en/.agents/react_15_3_wix_iframe/SKILL.md +20 -0
- package/locales/en/.agents/react_beast_practices/SKILL.md +29 -0
- package/locales/en/.agents/release_gate/SKILL.md +77 -0
- package/locales/en/.agents/release_gate_checklist_template/SKILL.md +68 -0
- package/locales/en/.agents/review_reference_snippets/SKILL.md +436 -0
- package/locales/en/.agents/security_baseline_dev/SKILL.md +16 -0
- package/locales/en/.agents/security_review/SKILL.md +55 -0
- package/locales/en/.agents/security_review_baseline/SKILL.md +25 -0
- package/locales/en/.agents/state_rtk_beast_practices/SKILL.md +15 -0
- package/locales/en/.agents/state_zustand_beast_practices/SKILL.md +11 -0
- package/locales/en/.agents/styling_css_stack/SKILL.md +12 -0
- package/locales/en/.agents/system_design_checklist/SKILL.md +48 -0
- package/locales/en/.agents/tanstack_beast_practices/SKILL.md +19 -0
- package/locales/en/.agents/tdd_workflow/SKILL.md +34 -0
- package/locales/en/.agents/testing_strategy_js/SKILL.md +30 -0
- package/locales/en/.agents/tests_quality_review/SKILL.md +18 -0
- package/locales/en/.agents/threat_model_baseline/SKILL.md +57 -0
- package/locales/en/.agents/tooling_bun_biome/SKILL.md +17 -0
- package/locales/en/.agents/typescript_beast_practices/SKILL.md +15 -0
- package/locales/en/.agents/ui_a11y_smoke_review/SKILL.md +15 -0
- package/locales/en/.agents/ui_inventory/SKILL.md +50 -0
- package/locales/en/.agents/ux_discovery/SKILL.md +48 -0
- package/locales/en/.agents/ux_spec/SKILL.md +56 -0
- package/locales/en/.agents/wix_self_hosted_embedded_script/SKILL.md +88 -0
- package/locales/en/AGENTS.md +120 -0
- package/locales/en/agents/architect.md +239 -0
- package/locales/en/agents/conductor.md +205 -0
- package/locales/en/agents/product_manager.md +119 -0
- package/locales/en/agents/reviewer.md +200 -0
- package/locales/en/agents/senior_full_stack.md +216 -0
- package/locales/en/agents/tester.md +186 -0
- package/locales/en/agents/ux_ui_designer.md +144 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -47,12 +47,15 @@ code-ai targets
|
|
|
47
47
|
|
|
48
48
|
# list available agents and skills from current repository
|
|
49
49
|
code-ai list
|
|
50
|
+
code-ai list --lang en
|
|
50
51
|
|
|
51
52
|
# health checks
|
|
52
53
|
code-ai doctor --target claude
|
|
54
|
+
code-ai doctor --target claude --lang en
|
|
53
55
|
|
|
54
56
|
# dry-run install (default)
|
|
55
57
|
code-ai install --target claude --agents conductor,reviewer --skills board,security_review
|
|
58
|
+
code-ai install --target claude --lang en --agents conductor,reviewer --skills board,security_review
|
|
56
59
|
|
|
57
60
|
# install into a newly created folder under current directory
|
|
58
61
|
code-ai install --target gpt-codex --create-dir my-new-project --agents all --skills all --apply
|
|
@@ -99,3 +102,4 @@ code-ai uninstall --target claude --apply
|
|
|
99
102
|
- Target aliases are accepted: `copilot`, `codex`, `claude`, `qwen`, `google`, `antigravity`.
|
|
100
103
|
- If your AI tool requires a custom location, pass `--destination <path>`.
|
|
101
104
|
- Source templates are resolved automatically: current directory first, bundled package templates second.
|
|
105
|
+
- Template language is selectable via `--lang ru|en` (default: `ru`).
|
package/dist/banner.d.ts
ADDED
package/dist/banner.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
const CODE_AI_ASCII = [
|
|
3
|
+
" ██████╗ ██████╗ ██████╗ ███████╗ █████╗ ██╗",
|
|
4
|
+
" ██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔══██╗██║",
|
|
5
|
+
" ██║ ██║ ██║██║ ██║█████╗ ███████║██║",
|
|
6
|
+
" ██║ ██║ ██║██║ ██║██╔══╝ ██╔══██║██║",
|
|
7
|
+
" ╚██████╗╚██████╔╝██████╔╝███████╗ ██║ ██║██║",
|
|
8
|
+
" ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝╚═╝",
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* Prints CODE-AI startup banner with green gradient.
|
|
12
|
+
*/
|
|
13
|
+
export function printBanner() {
|
|
14
|
+
const width = Math.max(...CODE_AI_ASCII.map((line) => line.length));
|
|
15
|
+
const start = { r: 64, g: 224, b: 128 };
|
|
16
|
+
const end = { r: 16, g: 120, b: 72 };
|
|
17
|
+
for (let row = 0; row < CODE_AI_ASCII.length; row += 1) {
|
|
18
|
+
const line = CODE_AI_ASCII[row];
|
|
19
|
+
let out = "";
|
|
20
|
+
for (let i = 0; i < line.length; i += 1) {
|
|
21
|
+
const ch = line[i];
|
|
22
|
+
if (ch === " ") {
|
|
23
|
+
out += ch;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const t = width <= 1 ? 0 : i / (width - 1);
|
|
27
|
+
const r = Math.round(start.r + (end.r - start.r) * t);
|
|
28
|
+
const g = Math.round(start.g + (end.g - start.g) * t);
|
|
29
|
+
const b = Math.round(start.b + (end.b - start.b) * t);
|
|
30
|
+
out += chalk.rgb(r, g, b)(ch);
|
|
31
|
+
}
|
|
32
|
+
process.stdout.write(`${out}\n`);
|
|
33
|
+
}
|
|
34
|
+
process.stdout.write(`${chalk.green("Code-AI installer wizard")}\n\n`);
|
|
35
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { runInstall, runUninstall } from "./installer.js";
|
|
|
9
9
|
import { error, info, success, warn } from "./logger.js";
|
|
10
10
|
import { getPlatformAdapters } from "./platforms/adapters.js";
|
|
11
11
|
import { resolveSourceRoot } from "./sourceResolver.js";
|
|
12
|
+
import { printBanner } from "./banner.js";
|
|
12
13
|
const program = new Command();
|
|
13
14
|
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
14
15
|
program
|
|
@@ -29,12 +30,15 @@ program
|
|
|
29
30
|
.command("list")
|
|
30
31
|
.description("List available bundled agents and skills")
|
|
31
32
|
.option("--project-dir <path>", "Optional custom source root path")
|
|
33
|
+
.option("--lang <lang>", "Template language: ru | en", "ru")
|
|
32
34
|
.action(async (options) => {
|
|
33
35
|
try {
|
|
36
|
+
const language = normalizeLanguage(options.lang);
|
|
34
37
|
const projectDir = await resolveSourceRoot({
|
|
35
38
|
projectDirOption: options.projectDir,
|
|
36
39
|
cwd: process.cwd(),
|
|
37
40
|
packageRoot,
|
|
41
|
+
language,
|
|
38
42
|
});
|
|
39
43
|
const catalog = await loadSourceCatalog(projectDir);
|
|
40
44
|
const agents = listAgentNames(catalog);
|
|
@@ -54,13 +58,16 @@ program
|
|
|
54
58
|
.requiredOption("--target <id>", "Target AI id")
|
|
55
59
|
.option("--project-dir <path>", "Optional custom source root path")
|
|
56
60
|
.option("--destination <path>", "Destination root (default: current directory)")
|
|
61
|
+
.option("--lang <lang>", "Template language: ru | en", "ru")
|
|
57
62
|
.action(async (options) => {
|
|
58
63
|
try {
|
|
59
64
|
const target = normalizeTarget(options.target);
|
|
65
|
+
const language = normalizeLanguage(options.lang);
|
|
60
66
|
const projectDir = await resolveSourceRoot({
|
|
61
67
|
projectDirOption: options.projectDir,
|
|
62
68
|
cwd: process.cwd(),
|
|
63
69
|
packageRoot,
|
|
70
|
+
language,
|
|
64
71
|
});
|
|
65
72
|
const destinationDir = path.resolve(options.destination ?? process.cwd());
|
|
66
73
|
const report = await runDoctor(projectDir, destinationDir, target);
|
|
@@ -93,6 +100,7 @@ program
|
|
|
93
100
|
.option("--project-dir <path>", "Optional custom source root path")
|
|
94
101
|
.option("--destination <path>", "Destination root (default: current directory)")
|
|
95
102
|
.option("--create-dir <name>", "Create child folder in current directory and install there")
|
|
103
|
+
.option("--lang <lang>", "Template language: ru | en", "ru")
|
|
96
104
|
.option("--agents <list>", "Comma list of agents or 'all'", "all")
|
|
97
105
|
.option("--skills <list>", "Comma list of skills or 'all'", "all")
|
|
98
106
|
.option("--overwrite", "Overwrite existing files", false)
|
|
@@ -101,10 +109,12 @@ program
|
|
|
101
109
|
.action(async (options) => {
|
|
102
110
|
try {
|
|
103
111
|
const target = normalizeTarget(options.target);
|
|
112
|
+
const language = normalizeLanguage(options.lang);
|
|
104
113
|
const projectDir = await resolveSourceRoot({
|
|
105
114
|
projectDirOption: options.projectDir,
|
|
106
115
|
cwd: process.cwd(),
|
|
107
116
|
packageRoot,
|
|
117
|
+
language,
|
|
108
118
|
});
|
|
109
119
|
const baseDestination = path.resolve(options.destination ?? process.cwd());
|
|
110
120
|
const destinationDir = options.createDir ? path.join(baseDestination, options.createDir) : baseDestination;
|
|
@@ -185,9 +195,26 @@ program
|
|
|
185
195
|
* Runs interactive installer workflow when no subcommand is provided.
|
|
186
196
|
*/
|
|
187
197
|
async function runInteractiveWizard() {
|
|
198
|
+
printBanner();
|
|
199
|
+
const languageAnswer = await prompts({
|
|
200
|
+
type: "select",
|
|
201
|
+
name: "language",
|
|
202
|
+
message: "Выбери язык шаблонов:",
|
|
203
|
+
choices: [
|
|
204
|
+
{ title: "Русский (ru)", value: "ru" },
|
|
205
|
+
{ title: "English (en)", value: "en" },
|
|
206
|
+
],
|
|
207
|
+
initial: 0,
|
|
208
|
+
});
|
|
209
|
+
if (!languageAnswer.language) {
|
|
210
|
+
warn("Установка отменена.");
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const language = normalizeLanguage(languageAnswer.language);
|
|
188
214
|
const sourceRoot = await resolveSourceRoot({
|
|
189
215
|
cwd: process.cwd(),
|
|
190
216
|
packageRoot,
|
|
217
|
+
language,
|
|
191
218
|
});
|
|
192
219
|
const catalog = await loadSourceCatalog(sourceRoot);
|
|
193
220
|
const adapters = getPlatformAdapters();
|
|
@@ -358,6 +385,18 @@ function normalizeTarget(rawTarget) {
|
|
|
358
385
|
}
|
|
359
386
|
return normalized;
|
|
360
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Normalizes template language code.
|
|
390
|
+
* @param rawLanguage Raw language value.
|
|
391
|
+
* @returns Normalized template language.
|
|
392
|
+
*/
|
|
393
|
+
function normalizeLanguage(rawLanguage) {
|
|
394
|
+
const value = rawLanguage.trim().toLowerCase();
|
|
395
|
+
if (value === "ru" || value === "en") {
|
|
396
|
+
return value;
|
|
397
|
+
}
|
|
398
|
+
throw new Error(`Unsupported language '${rawLanguage}'. Use 'ru' or 'en'.`);
|
|
399
|
+
}
|
|
361
400
|
if (process.argv.length <= 2) {
|
|
362
401
|
runInteractiveWizard().catch((err) => {
|
|
363
402
|
error(err.message);
|
package/dist/sourceResolver.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TemplateLanguage } from "./types.js";
|
|
1
2
|
/**
|
|
2
3
|
* Resolves source root with agent templates.
|
|
3
4
|
* @param args Resolution arguments.
|
|
@@ -7,4 +8,5 @@ export declare function resolveSourceRoot(args: {
|
|
|
7
8
|
projectDirOption?: string;
|
|
8
9
|
cwd: string;
|
|
9
10
|
packageRoot: string;
|
|
11
|
+
language: TemplateLanguage;
|
|
10
12
|
}): Promise<string>;
|
package/dist/sourceResolver.js
CHANGED
|
@@ -13,13 +13,23 @@ export async function resolveSourceRoot(args) {
|
|
|
13
13
|
}
|
|
14
14
|
throw new Error(`Invalid --project-dir: ${explicitPath}. Required: AGENTS.md, agents/, and .agents/.`);
|
|
15
15
|
}
|
|
16
|
+
const bundledPath = getBundledPath(args.packageRoot, args.language);
|
|
16
17
|
const cwdPath = path.resolve(args.cwd);
|
|
17
|
-
if (
|
|
18
|
-
|
|
18
|
+
if (args.language === "en") {
|
|
19
|
+
if (await isValidSourceRoot(bundledPath)) {
|
|
20
|
+
return bundledPath;
|
|
21
|
+
}
|
|
22
|
+
if (await isValidSourceRoot(cwdPath)) {
|
|
23
|
+
return cwdPath;
|
|
24
|
+
}
|
|
19
25
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
else {
|
|
27
|
+
if (await isValidSourceRoot(cwdPath)) {
|
|
28
|
+
return cwdPath;
|
|
29
|
+
}
|
|
30
|
+
if (await isValidSourceRoot(bundledPath)) {
|
|
31
|
+
return bundledPath;
|
|
32
|
+
}
|
|
23
33
|
}
|
|
24
34
|
throw new Error(`Could not find source templates in current directory or bundled package. Checked: ${cwdPath} and ${bundledPath}`);
|
|
25
35
|
}
|
|
@@ -34,3 +44,15 @@ async function isValidSourceRoot(rootDir) {
|
|
|
34
44
|
const dotAgentsDir = path.join(rootDir, ".agents");
|
|
35
45
|
return (await fs.pathExists(orchestratorPath)) && (await fs.pathExists(agentsDir)) && (await fs.pathExists(dotAgentsDir));
|
|
36
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns bundled templates root for selected language.
|
|
49
|
+
* @param packageRoot Installed package root.
|
|
50
|
+
* @param language Template language.
|
|
51
|
+
* @returns Absolute bundled source path.
|
|
52
|
+
*/
|
|
53
|
+
function getBundledPath(packageRoot, language) {
|
|
54
|
+
if (language === "en") {
|
|
55
|
+
return path.resolve(packageRoot, "locales", "en");
|
|
56
|
+
}
|
|
57
|
+
return path.resolve(packageRoot);
|
|
58
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a11y_baseline
|
|
3
|
+
description: Minimum baseline accessibility for web UI: keyboard navigation, focus management, form labels, ARIA for interactive components, error messages.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
#Skill: A11y Baseline (minimum)
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Set minimum accessibility requirements that can be tested and implemented in the MVP.
|
|
10
|
+
|
|
11
|
+
## Exit
|
|
12
|
+
List of a11y requirements for the project + notes on key components.
|
|
13
|
+
|
|
14
|
+
## Minimum Requirements (MVP)
|
|
15
|
+
1) **Keyboard navigation**
|
|
16
|
+
- All interactive elements are accessible from the keyboard
|
|
17
|
+
- Tab order is logical
|
|
18
|
+
- No trick traps
|
|
19
|
+
|
|
20
|
+
2) **Focus states**
|
|
21
|
+
- Visible focus for all interactive elements
|
|
22
|
+
- In modals: focus moves inside and returns back when closed
|
|
23
|
+
|
|
24
|
+
3) **Forms**
|
|
25
|
+
- Each field has a label (visible or aria-label)
|
|
26
|
+
- Errors are assigned to a field (the error description is read by assistive technologies)
|
|
27
|
+
- Required fields are marked and clear
|
|
28
|
+
|
|
29
|
+
4) **ARIA (where needed)**
|
|
30
|
+
- Dialog: role="dialog" + aria-modal
|
|
31
|
+
- Tabs, dropdowns, comboboxes - correct roles/attributes (if we use custom ones)
|
|
32
|
+
|
|
33
|
+
5) **Error messaging**
|
|
34
|
+
- Errors are clear, without “unknown error”
|
|
35
|
+
- There are actions: retry/close/fix
|
|
36
|
+
|
|
37
|
+
## Receipt for tester
|
|
38
|
+
- You can go through key flows without a mouse
|
|
39
|
+
- In modal, focus does not leak
|
|
40
|
+
- Forms announce label/errors
|
|
41
|
+
- Custom components have ARIA and work with assistive technologies
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name:adr_log
|
|
3
|
+
description: Record key architectural decisions (ADR) with trade-offs: Pros/Cons/Alternatives/Decision, status and date.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
#Skill: ADR Log
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Don’t lose track of “why we did this” and simplify review/support.
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
- For every non-trivial choice: database, auth, cache, module structure, API format, error strategy, queues, search, deployment, integrations, etc.
|
|
13
|
+
|
|
14
|
+
## ADR format (required)
|
|
15
|
+
# ADR-XXX: <Name>
|
|
16
|
+
|
|
17
|
+
## Context
|
|
18
|
+
<why is this necessary, what are the limitations, what hurts>
|
|
19
|
+
|
|
20
|
+
##Decision
|
|
21
|
+
<what you chose and how exactly>
|
|
22
|
+
|
|
23
|
+
## Consequences
|
|
24
|
+
### Positive
|
|
25
|
+
- ...
|
|
26
|
+
###Negative
|
|
27
|
+
- ...
|
|
28
|
+
|
|
29
|
+
## Alternatives Considered
|
|
30
|
+
- **A**: ...
|
|
31
|
+
- **B**: ...
|
|
32
|
+
|
|
33
|
+
##Status
|
|
34
|
+
Proposed / Accepted / Deprecated
|
|
35
|
+
|
|
36
|
+
##Date
|
|
37
|
+
YYYY-MM-DD
|
|
38
|
+
|
|
39
|
+
## Requirements (strict)
|
|
40
|
+
- For each ADR there must be explicit Pros/Cons/Alternatives and rationale of choice.
|
|
41
|
+
- If the decision affects security/data/cost, be sure to describe the consequences.
|
|
42
|
+
- ADR should be short and specific: without water, but with key arguments.
|
|
43
|
+
|
|
44
|
+
## Example (short)
|
|
45
|
+
# ADR-001: Selecting the main database
|
|
46
|
+
|
|
47
|
+
##Context
|
|
48
|
+
You need to store users/sessions/orders. Transactions and complex queries are needed. Expected growth to 100K users.
|
|
49
|
+
|
|
50
|
+
##Decision
|
|
51
|
+
We use PostgreSQL as the main database.
|
|
52
|
+
|
|
53
|
+
## Consequences
|
|
54
|
+
### Positive
|
|
55
|
+
- ACID transactions
|
|
56
|
+
- Rich queries and indexing
|
|
57
|
+
###Negative
|
|
58
|
+
- Possible need for scaling during growth
|
|
59
|
+
- Operational costs for administration
|
|
60
|
+
|
|
61
|
+
## Alternatives Considered
|
|
62
|
+
- **MongoDB**: weaker in transactional/complex join scenarios
|
|
63
|
+
- **DynamoDB**: vendor lock-in, more difficult to test locally
|
|
64
|
+
|
|
65
|
+
##Status
|
|
66
|
+
Accepted
|
|
67
|
+
|
|
68
|
+
##Date
|
|
69
|
+
2025-01-15
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api_contract_compliance_review
|
|
3
|
+
description: Checking the compliance of the API implementation with contracts: schemes, error codes, validation, authorization, idempotency, pagination.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: API Contract Compliance Review
|
|
7
|
+
|
|
8
|
+
## Check
|
|
9
|
+
- Endpoints correspond to API Contracts (method/path/request/response)
|
|
10
|
+
- Errors: status + error_code + safe message
|
|
11
|
+
- Border Validation (422 or accepted policy)
|
|
12
|
+
- 401 vs 403 correct
|
|
13
|
+
- Pagination/filters/sorting are implemented if UX is required
|
|
14
|
+
- Idempotency for risky operations (if it was in the contract/ADR)
|
|
15
|
+
|
|
16
|
+
## Exit
|
|
17
|
+
- Inconsistencies for each endpoint
|
|
18
|
+
- Recommendations (pointwise)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api_contracts
|
|
3
|
+
description: API contracts for UX flows: endpoints, schemas, errors, validation, authorization, perf/scalability considerations, idempotency and integration patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: API Contracts
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Make the API predictable, safe and efficient for the client and tests.
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
- UX Spec (screens/actions/states)
|
|
13
|
+
- PRD (acceptance criteria)
|
|
14
|
+
- Roles/permissions
|
|
15
|
+
|
|
16
|
+
## Exit
|
|
17
|
+
### General rules
|
|
18
|
+
- Unified error format (error_code, message, details)
|
|
19
|
+
- 401 vs 403 distinguish
|
|
20
|
+
- Validation at boundaries
|
|
21
|
+
- Pagination/filters/sorting - if the UI requires
|
|
22
|
+
- Idempotency for create/risk operations (where needed)
|
|
23
|
+
- Versioning (if the public API is expected to grow)
|
|
24
|
+
|
|
25
|
+
### For each endpoint
|
|
26
|
+
- Method + Path
|
|
27
|
+
- AuthN/AuthZ: required? roles?
|
|
28
|
+
- Request schema (types + restrictions)
|
|
29
|
+
- Response schema
|
|
30
|
+
- Errors:
|
|
31
|
+
- status
|
|
32
|
+
- error_code
|
|
33
|
+
- safe message
|
|
34
|
+
- Perf/scalability notes:
|
|
35
|
+
- limits, pagination, batch, round-trips minimization
|
|
36
|
+
|
|
37
|
+
### Integrations
|
|
38
|
+
- Webhooks/external APIs: retry/backoff, signature/verification, idempotency
|
|
39
|
+
- Async if justified (event-driven)
|
|
40
|
+
|
|
41
|
+
## Trade-offs
|
|
42
|
+
If there are controversial areas (for example, CQRS/async), record them as ADR.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture_compliance_review
|
|
3
|
+
description: Checking code compliance with architecture/ADR: module boundaries, layers, dependencies, conventions, red flags.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
#Skill: Architecture Compliance Review
|
|
7
|
+
|
|
8
|
+
## Check
|
|
9
|
+
- Compliance with modular boundaries (controller/service/repo or similar)
|
|
10
|
+
- Direction of dependencies (UI does not pull data directly, etc.)
|
|
11
|
+
- Lack of red flags: Big Ball of Mud, God Object, Tight Coupling, Magic
|
|
12
|
+
- New “solutions” are issued ADR (if they affect the database/cache/auth/contracts/integrations)
|
|
13
|
+
|
|
14
|
+
## Exit
|
|
15
|
+
- Findings (P0/P1/P2)
|
|
16
|
+
- Recommendations for refactoring (pointwise)
|
|
17
|
+
- Is ADR required? (yes/no what to describe)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture_doc
|
|
3
|
+
description: Architectural document on PRD+UX: modules, flows, data, integrations, errors, testability, bottlenecks, growth plan and implementation plan.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Architecture Document
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Make the architecture implementable, testable, and ready for growth.
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
-PRD
|
|
13
|
+
- UX Spec (flows/screens/states)
|
|
14
|
+
- Stack/deployment restrictions
|
|
15
|
+
- (if available) Current State Analysis
|
|
16
|
+
|
|
17
|
+
## Output (structure)
|
|
18
|
+
|
|
19
|
+
## 1) Overview
|
|
20
|
+
- What are we building (1 paragraph)
|
|
21
|
+
- Context and limitations
|
|
22
|
+
- Assumptions
|
|
23
|
+
|
|
24
|
+
## 2) System Context
|
|
25
|
+
- Actors
|
|
26
|
+
- External integrations
|
|
27
|
+
- System boundaries
|
|
28
|
+
|
|
29
|
+
## 3) High-level Architecture Diagram (text)
|
|
30
|
+
- FE → BE → DB/Cache/External
|
|
31
|
+
- Basic outlines of data and responsibilities
|
|
32
|
+
|
|
33
|
+
## 4) Modules / Components
|
|
34
|
+
For each component/module:
|
|
35
|
+
- responsibility
|
|
36
|
+
- public interfaces
|
|
37
|
+
- dependencies
|
|
38
|
+
- testing boundaries (unit vs integration)
|
|
39
|
+
- consistency rules (patterns/conventions)
|
|
40
|
+
|
|
41
|
+
## 5) Flow Mapping (from UX Spec)
|
|
42
|
+
- Flow → endpoints → services → repos → entities
|
|
43
|
+
- Where and why loading/empty/error states occur
|
|
44
|
+
- Error strategy on the UI (what to show to the user)
|
|
45
|
+
|
|
46
|
+
## 6) Integration Patterns
|
|
47
|
+
- Synchronous calls (HTTP)
|
|
48
|
+
- Asynchronous operations (events/queues) - if justified
|
|
49
|
+
- Idempotency for risky operations
|
|
50
|
+
|
|
51
|
+
## 7) Error Handling Strategy
|
|
52
|
+
- Unified error format (machine-readable code)
|
|
53
|
+
- 401/403/404/409/422/5xx policy
|
|
54
|
+
- Secure messages (no leaks)
|
|
55
|
+
|
|
56
|
+
## 8) Testing Strategy
|
|
57
|
+
- Boundaries of unit tests
|
|
58
|
+
- Integration tests (API/DB/integration contracts)
|
|
59
|
+
- A set of “must-have” scenarios for PRD/UX
|
|
60
|
+
- (optional) e2e / visual checks - if the design requires
|
|
61
|
+
|
|
62
|
+
## 9) Scalability Bottlenecks (anticipation)
|
|
63
|
+
- potential bottlenecks (DB hot spots, N+1, stateful sessions, heavy endpoints)
|
|
64
|
+
- measures: indexes, caching, background tasks, CDN, sharding (if ever needed)
|
|
65
|
+
|
|
66
|
+
## 10) Growth Plan
|
|
67
|
+
Describe the thresholds and what changes:
|
|
68
|
+
- 10K users: The current architecture is sufficient, but you need to monitor metrics and optimize database queries.
|
|
69
|
+
- 100K users: Implementation of Redis clustering and use of CDN for static resources
|
|
70
|
+
- 1M users: Transition to microservice architecture, dividing databases into reading and writing (Read/Write splitting)
|
|
71
|
+
- 10M users: Event-driven architecture, distributed caching, multi-region deployment
|
|
72
|
+
|
|
73
|
+
## 11) Implementation Plan
|
|
74
|
+
- Epics/subsystems
|
|
75
|
+
- Vertical slices MVP (minimum 1–3)
|
|
76
|
+
- Dependencies and order
|
|
77
|
+
|
|
78
|
+
## Quality (checklist)
|
|
79
|
+
- Any UX flow can be traced through modules/API/data
|
|
80
|
+
- Module boundaries reduce cohesion
|
|
81
|
+
- Testability is built in
|
|
82
|
+
- Observability/deployment is not forgotten
|
|
83
|
+
|
|
84
|
+
## Red Flags
|
|
85
|
+
- Big Ball of Mud: Lack of clear architecture
|
|
86
|
+
- Golden Hammer: Use the same solution for any task
|
|
87
|
+
- Premature Optimization: Optimization at too early stages
|
|
88
|
+
- Not Invented Here: Refusal of ready-made solutions
|
|
89
|
+
- Analysis Paralysis: Too much planning with little implementation
|
|
90
|
+
- Magic: Strange, undocumented behavior
|
|
91
|
+
- Tight Coupling: Too much dependence of components on each other
|
|
92
|
+
- God Object: One class or component that does everything
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: board
|
|
3
|
+
description: Project Board management: creating tasks with ID, statuses ☐/⏳/☑/⚠️, updates after each step, visible checklist in every message from the conductor.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Project Board (conductor's checklist)
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Provide transparent progress control: who is doing what, what is being blocked, what’s next.
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
- Immediately after kickoff
|
|
13
|
+
- After every response from any agent
|
|
14
|
+
- When new requirements/bugs/comments appear
|
|
15
|
+
|
|
16
|
+
## ID Rules
|
|
17
|
+
- Prefixes: `PM-xx`, `UX-xx`, `ARCH-xx`, `DEV-xx`, `REV-xx`, `TEST-xx`
|
|
18
|
+
- Numbering: 01, 02, 03…
|
|
19
|
+
- One task = one verifiable result (artifact/verification).
|
|
20
|
+
|
|
21
|
+
## Statuses
|
|
22
|
+
- `☐` not started
|
|
23
|
+
- `⏳` at work
|
|
24
|
+
- `☑` ready (there is an artifact + check)
|
|
25
|
+
- `⚠️` blocked (required: reason + withdrawal owner)
|
|
26
|
+
|
|
27
|
+
## Algorithm
|
|
28
|
+
1) Create a primary Project Board: 1–3 tasks per role for the next iteration.
|
|
29
|
+
2) Update statuses at every step:
|
|
30
|
+
- if the agent started - `⏳`
|
|
31
|
+
- if you submitted an artifact and it is accepted - `☑`
|
|
32
|
+
- if input/solution is needed - `⚠️`
|
|
33
|
+
3) With `⚠️` add the line “Blocker” to the report and the specific next step.
|
|
34
|
+
4) In each conductor’s message, display the Project Board as the first block.
|
|
35
|
+
|
|
36
|
+
## Board template (copy as is)
|
|
37
|
+
###Project Board
|
|
38
|
+
- [ ] (PM-01) ... — Owner: PM — Status: ☐/⏳/☑/⚠️
|
|
39
|
+
- [ ] (UX-01) ... — Owner: UX — Status: ☐/⏳/☑/⚠️
|
|
40
|
+
- [ ] (ARCH-01) ... — Owner: ARCH — Status: ☐/⏳/☑/⚠️
|
|
41
|
+
- [ ] (DEV-01) ... — Owner: DEV — Status: ☐/⏳/☑/⚠️
|
|
42
|
+
- [ ] (REV-01) ... — Owner: REV — Status: ☐/⏳/☑/⚠️
|
|
43
|
+
- [ ] (TEST-01) ... — Owner: TEST — Status: ☐/⏳/☑/⚠️
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloud_infrastructure_security
|
|
3
|
+
description: Security review of cloud/infra/CI/CD: IAM, secrets manager, network, logging/monitoring, supply chain, CDN/WAF, backup/DR.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
#Skill: Cloud & Infrastructure Security
|
|
7
|
+
|
|
8
|
+
## When to activate
|
|
9
|
+
- Deploy to AWS/Vercel/Railway/Cloudflare, etc.
|
|
10
|
+
- IAM policies/roles
|
|
11
|
+
- CI/CD pipelines
|
|
12
|
+
- IaC (Terraform/CloudFormation)
|
|
13
|
+
- Secrets management in the cloud
|
|
14
|
+
- CDN/WAF/edge security
|
|
15
|
+
- Backup/Recovery/DR
|
|
16
|
+
|
|
17
|
+
## Cloud Security Checklist
|
|
18
|
+
1) IAM & Access Control
|
|
19
|
+
- least privilege, no wildcard
|
|
20
|
+
- MFA for privileged accounts
|
|
21
|
+
- no root usage in prod
|
|
22
|
+
- regular access review
|
|
23
|
+
|
|
24
|
+
2) Secrets Management
|
|
25
|
+
- platform secrets manager
|
|
26
|
+
- rotation for DB credentials (if applicable)
|
|
27
|
+
- audit of access to secrets
|
|
28
|
+
- prohibition of leaks in logs/errors
|
|
29
|
+
|
|
30
|
+
3) Network Security
|
|
31
|
+
- DB is not public
|
|
32
|
+
- SSH/RDP only via VPN/bastion
|
|
33
|
+
- security groups/NACL least privilege
|
|
34
|
+
- flow logs (if available)
|
|
35
|
+
|
|
36
|
+
4) Logging & Monitoring
|
|
37
|
+
- audit of admin actions
|
|
38
|
+
- log retention (for example 90+ days if necessary)
|
|
39
|
+
- alerts for anomalies/failed auth
|
|
40
|
+
|
|
41
|
+
5) CI/CD Pipeline Security
|
|
42
|
+
- OIDC instead of long-lived credentials
|
|
43
|
+
- secret scanning
|
|
44
|
+
- dependency audit
|
|
45
|
+
- image scanning (if containers)
|
|
46
|
+
- branch protection / required reviews
|
|
47
|
+
|
|
48
|
+
6) CDN/WAF (Cloudflare and analogues)
|
|
49
|
+
- WAF managed rules (OWASP)
|
|
50
|
+
- rate limiting/bot protection
|
|
51
|
+
- security headers
|
|
52
|
+
- strict TLS
|
|
53
|
+
|
|
54
|
+
7) Backup & Disaster Recovery
|
|
55
|
+
- automated backups + retention
|
|
56
|
+
- PITR (if necessary)
|
|
57
|
+
- periodic recovery testing
|
|
58
|
+
- documented RPO/RTO
|
|
59
|
+
|
|
60
|
+
## Pre-Deployment Checklist (short)
|
|
61
|
+
IAM / Secrets / Network / Logging / Monitoring / CI/CD / WAF / Encryption / Backups / Runbooks / Incident plan
|
|
62
|
+
|
|
63
|
+
## Exit
|
|
64
|
+
- Findings P0/P1/P2 + specific fixes/settings
|
|
65
|
+
- What to add to CI and what checks are required
|
|
66
|
+
|
|
67
|
+
## See also
|
|
68
|
+
- Examples and anti-examples: $review_reference_snippets
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code_review_checklist
|
|
3
|
+
description: Universal review checklist: code quality, readability, testability, security, contracts, DoD.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Code Review Checklist
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
Quickly evaluate PR for completeness and compliance with standards.
|
|
10
|
+
|
|
11
|
+
## Checklist
|
|
12
|
+
### Code Quality
|
|
13
|
+
- [ ] Clear names, small functions/modules
|
|
14
|
+
- [ ] No duplication without reason
|
|
15
|
+
- [ ] No “magic” (unobvious side effects)
|
|
16
|
+
- [ ] Boundaries of layers/modules are respected
|
|
17
|
+
|
|
18
|
+
### Architecture
|
|
19
|
+
- [ ] Corresponds to Architecture Doc / ADR
|
|
20
|
+
- [ ] No Tight Coupling / God Object / Big Ball of Mud
|
|
21
|
+
- [ ] New solutions are recorded by ADR if necessary
|
|
22
|
+
|
|
23
|
+
### API & Data
|
|
24
|
+
- [ ] Contracts are met (schemas, codes, errors)
|
|
25
|
+
- [ ] Validation at the border
|
|
26
|
+
- [ ] Data/migration model is consistent
|
|
27
|
+
|
|
28
|
+
###Tests
|
|
29
|
+
- [ ] Unit + Integration tests added/updated
|
|
30
|
+
- [ ] Covered happy + edge + error paths
|
|
31
|
+
- [ ] No flakes/dependencies of tests on each other
|
|
32
|
+
|
|
33
|
+
###Security
|
|
34
|
+
- [ ] AuthZ on the server
|
|
35
|
+
- [ ] No secrets in code/logs
|
|
36
|
+
- [ ] Safe errors (no stack/SQL/PII)
|
|
37
|
+
- [ ] Dependency hygiene
|
|
38
|
+
|
|
39
|
+
### Observability & Ops
|
|
40
|
+
- [ ] request_id/trace_id correlation (if applicable)
|
|
41
|
+
- [ ] Logs are structured, without PII/secrets
|
|
42
|
+
- [ ] Startup/check instructions present
|
|
43
|
+
|
|
44
|
+
## Exit
|
|
45
|
+
- PASS: ...
|
|
46
|
+
- MISSING: ...
|
|
47
|
+
- Findings P0/P1/P2
|