kodu 2.2.0 → 3.0.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/README.md +24 -3
- package/bin/kodu.js +40 -0
- package/package.json +12 -67
- package/scripts/install.js +68 -0
- package/scripts/postinstall.js +22 -0
- package/AGENTS.md +0 -214
- package/__tests__/core/fs/fs.service.test.ts +0 -72
- package/__tests__/core/registry/registry.service.test.ts +0 -82
- package/__tests__/shared/cleaner/cleaner.service.test.ts +0 -102
- package/__tests__/shared/git/git.service.test.ts +0 -84
- package/__tests__/shared/runbook/runbook.service.test.ts +0 -104
- package/__tests__/shared/tokenizer/tokenizer.service.test.ts +0 -45
- package/biome.json +0 -50
- package/dist/package.json +0 -96
- package/dist/src/app.module.d.ts +0 -2
- package/dist/src/app.module.js +0 -42
- package/dist/src/app.module.js.map +0 -1
- package/dist/src/commands/clean/clean.command.d.ts +0 -37
- package/dist/src/commands/clean/clean.command.js +0 -240
- package/dist/src/commands/clean/clean.command.js.map +0 -1
- package/dist/src/commands/clean/clean.module.d.ts +0 -2
- package/dist/src/commands/clean/clean.module.js +0 -26
- package/dist/src/commands/clean/clean.module.js.map +0 -1
- package/dist/src/commands/init/init.command.d.ts +0 -10
- package/dist/src/commands/init/init.command.js +0 -96
- package/dist/src/commands/init/init.command.js.map +0 -1
- package/dist/src/commands/init/init.module.d.ts +0 -2
- package/dist/src/commands/init/init.module.js +0 -22
- package/dist/src/commands/init/init.module.js.map +0 -1
- package/dist/src/commands/ops/ops-add.command.d.ts +0 -18
- package/dist/src/commands/ops/ops-add.command.js +0 -102
- package/dist/src/commands/ops/ops-add.command.js.map +0 -1
- package/dist/src/commands/ops/ops-init.command.d.ts +0 -22
- package/dist/src/commands/ops/ops-init.command.js +0 -130
- package/dist/src/commands/ops/ops-init.command.js.map +0 -1
- package/dist/src/commands/ops/ops-list.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-list.command.js +0 -73
- package/dist/src/commands/ops/ops-list.command.js.map +0 -1
- package/dist/src/commands/ops/ops-path.command.d.ts +0 -9
- package/dist/src/commands/ops/ops-path.command.js +0 -52
- package/dist/src/commands/ops/ops-path.command.js.map +0 -1
- package/dist/src/commands/ops/ops-runbook.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-runbook.command.js +0 -81
- package/dist/src/commands/ops/ops-runbook.command.js.map +0 -1
- package/dist/src/commands/ops/ops-status.command.d.ts +0 -11
- package/dist/src/commands/ops/ops-status.command.js +0 -62
- package/dist/src/commands/ops/ops-status.command.js.map +0 -1
- package/dist/src/commands/ops/ops-use.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-use.command.js +0 -76
- package/dist/src/commands/ops/ops-use.command.js.map +0 -1
- package/dist/src/commands/ops/ops.command.d.ts +0 -7
- package/dist/src/commands/ops/ops.command.js +0 -56
- package/dist/src/commands/ops/ops.command.js.map +0 -1
- package/dist/src/commands/ops/ops.helpers.d.ts +0 -2
- package/dist/src/commands/ops/ops.helpers.js +0 -11
- package/dist/src/commands/ops/ops.helpers.js.map +0 -1
- package/dist/src/commands/ops/ops.module.d.ts +0 -2
- package/dist/src/commands/ops/ops.module.js +0 -36
- package/dist/src/commands/ops/ops.module.js.map +0 -1
- package/dist/src/commands/pack/pack.command.d.ts +0 -51
- package/dist/src/commands/pack/pack.command.js +0 -355
- package/dist/src/commands/pack/pack.command.js.map +0 -1
- package/dist/src/commands/pack/pack.module.d.ts +0 -2
- package/dist/src/commands/pack/pack.module.js +0 -27
- package/dist/src/commands/pack/pack.module.js.map +0 -1
- package/dist/src/core/config/config.module.d.ts +0 -2
- package/dist/src/core/config/config.module.js +0 -23
- package/dist/src/core/config/config.module.js.map +0 -1
- package/dist/src/core/config/config.schema.d.ts +0 -19
- package/dist/src/core/config/config.schema.js +0 -56
- package/dist/src/core/config/config.schema.js.map +0 -1
- package/dist/src/core/config/config.service.d.ts +0 -7
- package/dist/src/core/config/config.service.js +0 -49
- package/dist/src/core/config/config.service.js.map +0 -1
- package/dist/src/core/config/prompt.service.d.ts +0 -10
- package/dist/src/core/config/prompt.service.js +0 -80
- package/dist/src/core/config/prompt.service.js.map +0 -1
- package/dist/src/core/file-system/fs.module.d.ts +0 -2
- package/dist/src/core/file-system/fs.module.js +0 -21
- package/dist/src/core/file-system/fs.module.js.map +0 -1
- package/dist/src/core/file-system/fs.service.d.ts +0 -27
- package/dist/src/core/file-system/fs.service.js +0 -203
- package/dist/src/core/file-system/fs.service.js.map +0 -1
- package/dist/src/core/registry/registry.module.d.ts +0 -2
- package/dist/src/core/registry/registry.module.js +0 -22
- package/dist/src/core/registry/registry.module.js.map +0 -1
- package/dist/src/core/registry/registry.schema.d.ts +0 -24
- package/dist/src/core/registry/registry.schema.js +0 -21
- package/dist/src/core/registry/registry.schema.js.map +0 -1
- package/dist/src/core/registry/registry.service.d.ts +0 -16
- package/dist/src/core/registry/registry.service.js +0 -91
- package/dist/src/core/registry/registry.service.js.map +0 -1
- package/dist/src/core/ui/ui.module.d.ts +0 -2
- package/dist/src/core/ui/ui.module.js +0 -22
- package/dist/src/core/ui/ui.module.js.map +0 -1
- package/dist/src/core/ui/ui.service.d.ts +0 -22
- package/dist/src/core/ui/ui.service.js +0 -43
- package/dist/src/core/ui/ui.service.js.map +0 -1
- package/dist/src/main.d.ts +0 -2
- package/dist/src/main.js +0 -16
- package/dist/src/main.js.map +0 -1
- package/dist/src/shared/cleaner/cleaner.service.d.ts +0 -23
- package/dist/src/shared/cleaner/cleaner.service.js +0 -223
- package/dist/src/shared/cleaner/cleaner.service.js.map +0 -1
- package/dist/src/shared/cleaner/cleaner.types.d.ts +0 -21
- package/dist/src/shared/cleaner/cleaner.types.js +0 -3
- package/dist/src/shared/cleaner/cleaner.types.js.map +0 -1
- package/dist/src/shared/constants.d.ts +0 -4
- package/dist/src/shared/constants.js +0 -113
- package/dist/src/shared/constants.js.map +0 -1
- package/dist/src/shared/deps/deps.module.d.ts +0 -2
- package/dist/src/shared/deps/deps.module.js +0 -21
- package/dist/src/shared/deps/deps.module.js.map +0 -1
- package/dist/src/shared/deps/deps.service.d.ts +0 -15
- package/dist/src/shared/deps/deps.service.js +0 -114
- package/dist/src/shared/deps/deps.service.js.map +0 -1
- package/dist/src/shared/git/git.module.d.ts +0 -2
- package/dist/src/shared/git/git.module.js +0 -21
- package/dist/src/shared/git/git.module.js.map +0 -1
- package/dist/src/shared/git/git.service.d.ts +0 -5
- package/dist/src/shared/git/git.service.js +0 -56
- package/dist/src/shared/git/git.service.js.map +0 -1
- package/dist/src/shared/runbook/runbook.module.d.ts +0 -2
- package/dist/src/shared/runbook/runbook.module.js +0 -22
- package/dist/src/shared/runbook/runbook.module.js.map +0 -1
- package/dist/src/shared/runbook/runbook.service.d.ts +0 -20
- package/dist/src/shared/runbook/runbook.service.js +0 -118
- package/dist/src/shared/runbook/runbook.service.js.map +0 -1
- package/dist/src/shared/runbook/runbook.templates.d.ts +0 -6
- package/dist/src/shared/runbook/runbook.templates.js +0 -49
- package/dist/src/shared/runbook/runbook.templates.js.map +0 -1
- package/dist/src/shared/tokenizer/tokenizer.module.d.ts +0 -2
- package/dist/src/shared/tokenizer/tokenizer.module.js +0 -21
- package/dist/src/shared/tokenizer/tokenizer.module.js.map +0 -1
- package/dist/src/shared/tokenizer/tokenizer.service.d.ts +0 -10
- package/dist/src/shared/tokenizer/tokenizer.service.js +0 -36
- package/dist/src/shared/tokenizer/tokenizer.service.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/docs/todo.md +0 -7
- package/knip.json +0 -10
- package/kodu.json +0 -63
- package/kodu.schema.json +0 -100
- package/lefthook.yml +0 -11
- package/nest-cli.json +0 -8
- package/registry.schema.json +0 -39
- package/scripts/generate-json-schema.ts +0 -27
- package/skills/ac/SKILL.md +0 -239
- package/skills/al/SKILL.md +0 -98
- package/skills/audit/SKILL.md +0 -205
- package/skills/audit/audit-baseline-template.yml +0 -188
- package/skills/audit/runtime-detect.md +0 -64
- package/skills/audit/stacks/_generic.md +0 -41
- package/skills/audit/stacks/_registry.md +0 -47
- package/skills/audit/stacks/go.md +0 -66
- package/skills/audit/stacks/java.md +0 -44
- package/skills/audit/stacks/node.md +0 -57
- package/skills/audit/stacks/python.md +0 -45
- package/skills/audit/stacks/rust.md +0 -44
- package/skills/audit-api-contracts/SKILL.md +0 -201
- package/skills/audit-architecture/SKILL.md +0 -200
- package/skills/audit-bugs/SKILL.md +0 -226
- package/skills/audit-concurrency/SKILL.md +0 -197
- package/skills/audit-deployment/SKILL.md +0 -218
- package/skills/audit-docs/SKILL.md +0 -209
- package/skills/audit-errors/SKILL.md +0 -216
- package/skills/audit-logging/SKILL.md +0 -197
- package/skills/audit-matrix/SKILL.md +0 -245
- package/skills/audit-meta/SKILL.md +0 -120
- package/skills/audit-naming/SKILL.md +0 -200
- package/skills/audit-owasp/SKILL.md +0 -223
- package/skills/audit-performance/SKILL.md +0 -199
- package/skills/audit-reinvention/SKILL.md +0 -214
- package/skills/audit-secrets/SKILL.md +0 -198
- package/skills/audit-tests/SKILL.md +0 -210
- package/skills/audit-validation/SKILL.md +0 -206
- package/skills/audit-verify/SKILL.md +0 -139
- package/skills/audit-yagni/SKILL.md +0 -188
- package/skills/doc-gen/SKILL.md +0 -490
- package/skills/doc-gen/scripts/doc_gen.py +0 -911
- package/skills/generate-project-docs/SKILL.md +0 -380
- package/skills/implement-project/SKILL.md +0 -409
- package/skills/liteend-init/SKILL.md +0 -84
- package/skills/litefront-init/SKILL.md +0 -96
- package/skills/litefront-prototype/SKILL.md +0 -484
- package/skills/ops/SKILL.md +0 -94
- package/skills/post-call-task-builder/SKILL.md +0 -419
- package/skills/project-setup-standardizer/SKILL.md +0 -285
- package/skills/skills-best-practices/SKILL.md +0 -415
- package/skills/start/SKILL.md +0 -319
- package/skills/tech-blueprint/SKILL.md +0 -890
- package/skills/tech-blueprint/scripts/blueprint_validator.py +0 -417
- package/src/app.module.ts +0 -29
- package/src/commands/clean/clean.command.ts +0 -235
- package/src/commands/clean/clean.module.ts +0 -13
- package/src/commands/init/init.command.ts +0 -92
- package/src/commands/init/init.module.ts +0 -9
- package/src/commands/ops/ops-add.command.ts +0 -83
- package/src/commands/ops/ops-init.command.ts +0 -125
- package/src/commands/ops/ops-list.command.ts +0 -57
- package/src/commands/ops/ops-path.command.ts +0 -38
- package/src/commands/ops/ops-runbook.command.ts +0 -74
- package/src/commands/ops/ops-status.command.ts +0 -47
- package/src/commands/ops/ops-use.command.ts +0 -76
- package/src/commands/ops/ops.command.ts +0 -42
- package/src/commands/ops/ops.helpers.ts +0 -20
- package/src/commands/ops/ops.module.ts +0 -23
- package/src/commands/pack/pack.command.ts +0 -347
- package/src/commands/pack/pack.module.ts +0 -14
- package/src/core/config/config.module.ts +0 -10
- package/src/core/config/config.schema.ts +0 -58
- package/src/core/config/config.service.ts +0 -43
- package/src/core/config/prompt.service.ts +0 -80
- package/src/core/file-system/fs.module.ts +0 -8
- package/src/core/file-system/fs.service.ts +0 -248
- package/src/core/registry/registry.module.ts +0 -9
- package/src/core/registry/registry.schema.ts +0 -46
- package/src/core/registry/registry.service.ts +0 -128
- package/src/core/ui/ui.module.ts +0 -9
- package/src/core/ui/ui.service.ts +0 -39
- package/src/main.ts +0 -12
- package/src/shared/cleaner/cleaner.service.ts +0 -289
- package/src/shared/cleaner/cleaner.types.ts +0 -23
- package/src/shared/constants.ts +0 -118
- package/src/shared/deps/deps.module.ts +0 -8
- package/src/shared/deps/deps.service.ts +0 -175
- package/src/shared/git/git.module.ts +0 -8
- package/src/shared/git/git.service.ts +0 -47
- package/src/shared/runbook/runbook.module.ts +0 -9
- package/src/shared/runbook/runbook.service.ts +0 -164
- package/src/shared/runbook/runbook.templates.ts +0 -66
- package/src/shared/tokenizer/tokenizer.module.ts +0 -8
- package/src/shared/tokenizer/tokenizer.service.ts +0 -30
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -28
package/kodu.schema.json
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"type": "object",
|
|
4
|
-
"properties": {
|
|
5
|
-
"$schema": {
|
|
6
|
-
"type": "string"
|
|
7
|
-
},
|
|
8
|
-
"cleaner": {
|
|
9
|
-
"default": {
|
|
10
|
-
"whitelist": ["//!"],
|
|
11
|
-
"keepJSDoc": true,
|
|
12
|
-
"useGitignore": true,
|
|
13
|
-
"ignore": []
|
|
14
|
-
},
|
|
15
|
-
"type": "object",
|
|
16
|
-
"properties": {
|
|
17
|
-
"whitelist": {
|
|
18
|
-
"default": ["//!"],
|
|
19
|
-
"type": "array",
|
|
20
|
-
"items": {
|
|
21
|
-
"type": "string"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"keepJSDoc": {
|
|
25
|
-
"default": true,
|
|
26
|
-
"type": "boolean"
|
|
27
|
-
},
|
|
28
|
-
"useGitignore": {
|
|
29
|
-
"default": true,
|
|
30
|
-
"type": "boolean"
|
|
31
|
-
},
|
|
32
|
-
"ignore": {
|
|
33
|
-
"default": [],
|
|
34
|
-
"type": "array",
|
|
35
|
-
"items": {
|
|
36
|
-
"type": "string"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"required": ["whitelist", "keepJSDoc", "useGitignore", "ignore"],
|
|
41
|
-
"additionalProperties": false
|
|
42
|
-
},
|
|
43
|
-
"packer": {
|
|
44
|
-
"default": {
|
|
45
|
-
"ignore": [
|
|
46
|
-
"package-lock.json",
|
|
47
|
-
"yarn.lock",
|
|
48
|
-
"pnpm-lock.yaml",
|
|
49
|
-
".git",
|
|
50
|
-
".kodu",
|
|
51
|
-
"node_modules",
|
|
52
|
-
"dist",
|
|
53
|
-
"coverage"
|
|
54
|
-
],
|
|
55
|
-
"useGitignore": true,
|
|
56
|
-
"contentBasedBinaryDetection": false
|
|
57
|
-
},
|
|
58
|
-
"type": "object",
|
|
59
|
-
"properties": {
|
|
60
|
-
"ignore": {
|
|
61
|
-
"default": [
|
|
62
|
-
"package-lock.json",
|
|
63
|
-
"yarn.lock",
|
|
64
|
-
"pnpm-lock.yaml",
|
|
65
|
-
".git",
|
|
66
|
-
".kodu",
|
|
67
|
-
"node_modules",
|
|
68
|
-
"dist",
|
|
69
|
-
"coverage"
|
|
70
|
-
],
|
|
71
|
-
"type": "array",
|
|
72
|
-
"items": {
|
|
73
|
-
"type": "string"
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
"useGitignore": {
|
|
77
|
-
"default": true,
|
|
78
|
-
"type": "boolean"
|
|
79
|
-
},
|
|
80
|
-
"contentBasedBinaryDetection": {
|
|
81
|
-
"default": false,
|
|
82
|
-
"type": "boolean"
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
"required": ["ignore", "useGitignore", "contentBasedBinaryDetection"],
|
|
86
|
-
"additionalProperties": false
|
|
87
|
-
},
|
|
88
|
-
"prompts": {
|
|
89
|
-
"type": "object",
|
|
90
|
-
"properties": {
|
|
91
|
-
"pack": {
|
|
92
|
-
"type": "string"
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
"additionalProperties": false
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
"required": ["cleaner", "packer"],
|
|
99
|
-
"additionalProperties": false
|
|
100
|
-
}
|
package/lefthook.yml
DELETED
package/nest-cli.json
DELETED
package/registry.schema.json
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"type": "object",
|
|
4
|
-
"properties": {
|
|
5
|
-
"$schema": {
|
|
6
|
-
"type": "string"
|
|
7
|
-
},
|
|
8
|
-
"projects": {
|
|
9
|
-
"default": {},
|
|
10
|
-
"type": "object",
|
|
11
|
-
"propertyNames": {
|
|
12
|
-
"type": "string"
|
|
13
|
-
},
|
|
14
|
-
"additionalProperties": {
|
|
15
|
-
"type": "object",
|
|
16
|
-
"properties": {
|
|
17
|
-
"path": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"minLength": 1
|
|
20
|
-
},
|
|
21
|
-
"repo": {
|
|
22
|
-
"type": "string"
|
|
23
|
-
},
|
|
24
|
-
"stands": {
|
|
25
|
-
"default": ["local", "dev", "stage", "prod"],
|
|
26
|
-
"type": "array",
|
|
27
|
-
"items": {
|
|
28
|
-
"type": "string"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"required": ["path", "stands"],
|
|
33
|
-
"additionalProperties": false
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
"required": ["projects"],
|
|
38
|
-
"additionalProperties": false
|
|
39
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { writeFile } from 'node:fs/promises';
|
|
2
|
-
import { execa } from 'execa';
|
|
3
|
-
import { configSchema } from '../src/core/config/config.schema';
|
|
4
|
-
import { registrySchema } from '../src/core/registry/registry.schema';
|
|
5
|
-
|
|
6
|
-
async function main(): Promise<void> {
|
|
7
|
-
await writeFile(
|
|
8
|
-
'kodu.schema.json',
|
|
9
|
-
JSON.stringify(configSchema.toJSONSchema(), null, 2),
|
|
10
|
-
'utf8',
|
|
11
|
-
);
|
|
12
|
-
await execa('biome', ['format', '--write', 'kodu.schema.json']);
|
|
13
|
-
console.log('✅ JSON schema generated: kodu.schema.json');
|
|
14
|
-
|
|
15
|
-
await writeFile(
|
|
16
|
-
'registry.schema.json',
|
|
17
|
-
JSON.stringify(registrySchema.toJSONSchema(), null, 2),
|
|
18
|
-
'utf8',
|
|
19
|
-
);
|
|
20
|
-
await execa('biome', ['format', '--write', 'registry.schema.json']);
|
|
21
|
-
console.log('✅ JSON schema generated: registry.schema.json');
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
main().catch((error: unknown) => {
|
|
25
|
-
console.error(error);
|
|
26
|
-
process.exitCode = 1;
|
|
27
|
-
});
|
package/skills/ac/SKILL.md
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ac
|
|
3
|
-
description: "Обновляет status.md, фиксирует решения и выполняет грамотный git commit."
|
|
4
|
-
compatibility: opencode
|
|
5
|
-
metadata:
|
|
6
|
-
level: multi
|
|
7
|
-
output: .agent-log/ + git commit
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Что делает этот скилл
|
|
11
|
-
|
|
12
|
-
Перед коммитом делает три вещи:
|
|
13
|
-
1. **Проверяет** — нет ли секретов в коде
|
|
14
|
-
2. **Обновляет** — `status.md` (отмечает что сделано) и пишет decision если нужно
|
|
15
|
-
3. **Коммитит** — по Conventional Commits, с WHY в теле
|
|
16
|
-
|
|
17
|
-
Запускается **автоматически** при словах "коммитим / готово / push / закончили / сохрани".
|
|
18
|
-
Пользователь может вызвать вручную: `/ac`.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# Шаги
|
|
23
|
-
|
|
24
|
-
## Шаг 1 — Узнать что изменилось
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
git diff --cached --name-only
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Если список пустой:
|
|
31
|
-
```bash
|
|
32
|
-
git diff HEAD --name-only
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Если и там пусто → написать "Нечего коммитить" и **остановиться**.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Шаг 2 — Проверить на секреты
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
git diff --cached
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Проверить весь diff по паттернам:
|
|
46
|
-
|
|
47
|
-
- AWS access key
|
|
48
|
-
- GitHub PAT
|
|
49
|
-
- OpenAI / Anthropic key / ...
|
|
50
|
-
- Приватный ключ
|
|
51
|
-
- Пароль в коде (не placeholder)
|
|
52
|
-
- Секрет в коде (не placeholder)
|
|
53
|
-
|
|
54
|
-
**Нашёл → СТОП.** Показать строку с проблемой. Коммитить нельзя.
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Шаг 3 — Записать архитектурное решение (если было)
|
|
59
|
-
|
|
60
|
-
**Сначала ответить:** было ли в сессии архитектурное решение? (обсуждались варианты, выбирался подход)
|
|
61
|
-
|
|
62
|
-
**Нет → пропустить этот шаг.**
|
|
63
|
-
|
|
64
|
-
**Да:**
|
|
65
|
-
|
|
66
|
-
1. Найти следующий ID: `glob: .agent-log/decisions/**/*.md` → max номер `DEC-NNNN` → +1. Если файлов нет → `DEC-0001`.
|
|
67
|
-
|
|
68
|
-
2. Slug из заголовка:
|
|
69
|
-
```bash
|
|
70
|
-
python3 -c "import unicodedata,re,sys; s=unicodedata.normalize('NFKD',sys.argv[1]).encode('ascii','ignore').decode(); print(re.sub(r'[^a-z0-9]+','-',s.lower()).strip('-'))" "Заголовок решения"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
3. Создать `.agent-log/decisions/YYYY/MM/DD/DEC-NNNN-slug.md`:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
---
|
|
77
|
-
id: DEC-NNNN
|
|
78
|
-
type: decision
|
|
79
|
-
title: Заголовок решения
|
|
80
|
-
summary: Одна строка — суть выбора
|
|
81
|
-
status: active
|
|
82
|
-
created_at: YYYY-MM-DD
|
|
83
|
-
updated_at: YYYY-MM-DD
|
|
84
|
-
tags: [тег1, тег2]
|
|
85
|
-
confidence: medium
|
|
86
|
-
schema_version: 1
|
|
87
|
-
related_files: [только исходный код, без .agent-log/]
|
|
88
|
-
origin: generated
|
|
89
|
-
verification_state: unverified
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Контекст
|
|
93
|
-
|
|
94
|
-
Почему возник этот вопрос. Что за проблема. Понятно для нового разработчика.
|
|
95
|
-
|
|
96
|
-
## Решение
|
|
97
|
-
|
|
98
|
-
Что выбрали и почему именно это.
|
|
99
|
-
|
|
100
|
-
## Альтернативы
|
|
101
|
-
|
|
102
|
-
Что рассматривали и почему не выбрали. Даже плохие варианты — чтобы не предлагали снова.
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Запомнить ID (`DEC-NNNN`) — нужен в шаге 6.
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Шаг 4 — Обновить status.md
|
|
110
|
-
|
|
111
|
-
Прочитать `.agent-log/status.md`.
|
|
112
|
-
|
|
113
|
-
Определить: какая задача из "Текущего фокуса" решена этим коммитом?
|
|
114
|
-
|
|
115
|
-
- `- [ ] задача` → `- [x] задача` для выполненной
|
|
116
|
-
- Если в "Ближайшем бэклоге" есть задачи — перенести первую в "Текущий фокус"
|
|
117
|
-
(убрать из бэклога, добавить как `- [ ]` в фокус)
|
|
118
|
-
- Обновить `updated_at` во frontmatter: текущая дата и время (`YYYY-MM-DD HH:MM`)
|
|
119
|
-
|
|
120
|
-
Если `status.md` не существует → создать пустой шаблон:
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
---
|
|
124
|
-
type: status
|
|
125
|
-
updated_at: YYYY-MM-DD HH:MM
|
|
126
|
-
current_goal: ""
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
# Текущий фокус
|
|
130
|
-
- [ ] Задача не определена
|
|
131
|
-
|
|
132
|
-
# Ближайший бэклог (Next Steps)
|
|
133
|
-
|
|
134
|
-
# Известные проблемы / Технический долг
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Шаг 5 — Добавить файлы в staged
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
git add .agent-log/status.md
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
Если в шаге 3 создано решение:
|
|
146
|
-
```bash
|
|
147
|
-
git add .agent-log/decisions/
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Шаг 6 — Сформировать commit message
|
|
153
|
-
|
|
154
|
-
### Формат (Conventional Commits)
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
тип(область): короткое описание
|
|
158
|
-
|
|
159
|
-
Почему было сделано это изменение.
|
|
160
|
-
Какая проблема решалась и почему именно так.
|
|
161
|
-
|
|
162
|
-
Related: DEC-NNNN
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Как выбрать тип
|
|
166
|
-
|
|
167
|
-
| Тип | Когда |
|
|
168
|
-
|---|---|
|
|
169
|
-
| `feat` | Новая функциональность |
|
|
170
|
-
| `fix` | Исправление бага |
|
|
171
|
-
| `refactor` | Переработка без изменения поведения |
|
|
172
|
-
| `docs` | Только документация |
|
|
173
|
-
| `chore` | Конфиги, зависимости |
|
|
174
|
-
| `test` | Тесты |
|
|
175
|
-
| `perf` | Производительность |
|
|
176
|
-
| `style` | Форматирование |
|
|
177
|
-
| `build` | Сборка, CI/CD |
|
|
178
|
-
|
|
179
|
-
### Правила первой строки
|
|
180
|
-
|
|
181
|
-
- Императив: `add`, `fix`, `remove` (не `added`, не `adding`)
|
|
182
|
-
- Строчная буква после двоеточия, без точки, ≤72 символа
|
|
183
|
-
- **Всегда на английском**
|
|
184
|
-
|
|
185
|
-
### Тело — обязательно
|
|
186
|
-
|
|
187
|
-
WHY, не WHAT. Почему именно так. Отделить пустой строкой, перенос на 72 символах.
|
|
188
|
-
|
|
189
|
-
### Footer
|
|
190
|
-
|
|
191
|
-
- `Related: DEC-NNNN` — если в шаге 3 создано решение
|
|
192
|
-
- `BREAKING CHANGE: описание` — если ломающее изменение
|
|
193
|
-
|
|
194
|
-
### Пример
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
feat(auth): add session invalidation via Redis
|
|
198
|
-
|
|
199
|
-
JWT tokens could not be revoked server-side without maintaining
|
|
200
|
-
a blacklist. Redis-based sessions solve this with O(1) lookup
|
|
201
|
-
and TTL-based cleanup.
|
|
202
|
-
|
|
203
|
-
Related: DEC-0001
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## Шаг 7 — Выполнить коммит
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
git commit -m "тип(область): описание
|
|
212
|
-
|
|
213
|
-
WHY в теле.
|
|
214
|
-
|
|
215
|
-
Related: DEC-NNNN"
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Шаг 8 — Вывод пользователю
|
|
221
|
-
|
|
222
|
-
```
|
|
223
|
-
✅ Изменения зафиксированы
|
|
224
|
-
Коммит: <sha7> — <описание>
|
|
225
|
-
status.md обновлён.
|
|
226
|
-
Решений записано: [N / нет]
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
# Правила
|
|
232
|
-
|
|
233
|
-
- **Секреты** → СТОП, показать строку, не коммитить
|
|
234
|
-
- **Decision** — только при реальном архитектурном выборе, не каждый коммит
|
|
235
|
-
- **Commit message** — английский, Conventional Commits
|
|
236
|
-
- **WHY неясен** — инферировать из контекста сессии, не спрашивать повторно
|
|
237
|
-
- **status.md** — обновлять всегда, минимум `updated_at`
|
|
238
|
-
- **Язык в markdown-файлах** — просто и понятно, короткие предложения, без жаргона без объяснений
|
|
239
|
-
- **Порядок**: проверить → записать файлы → git add → git commit
|
package/skills/al/SKILL.md
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: al
|
|
3
|
-
description: "Загружает рабочий контекст из .agent-log/ и git log в начале сессии."
|
|
4
|
-
compatibility: opencode
|
|
5
|
-
metadata:
|
|
6
|
-
level: single
|
|
7
|
-
output: context summary
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Что делает этот скилл
|
|
11
|
-
|
|
12
|
-
Даёт агенту актуальный рабочий контекст перед началом работы:
|
|
13
|
-
- что делаем прямо сейчас (из `status.md`)
|
|
14
|
-
- что уже было сделано (из `git log`)
|
|
15
|
-
- какие архитектурные решения приняты (из `decisions/`)
|
|
16
|
-
|
|
17
|
-
Запускается **автоматически** в начале каждой сессии. Пользователь может вызвать вручную: `/al`.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Шаги
|
|
22
|
-
|
|
23
|
-
**Шаг 1 — Проверить базу знаний**
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
ls .agent-log/
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
> ⚠️ Никогда не использовать инструмент `read` для директории — вернёт "File not found". Всегда через `bash`.
|
|
30
|
-
|
|
31
|
-
- Директория есть → перейти к шагу 2
|
|
32
|
-
- Директории нет → сообщить: _"AKMS не инициализирован. Запустить `akms init`?"_ — остановиться
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
**Шаг 2 — Прочитать текущий фокус**
|
|
37
|
-
|
|
38
|
-
Прочитать `.agent-log/status.md` целиком — файл всегда короткий.
|
|
39
|
-
|
|
40
|
-
Запомнить:
|
|
41
|
-
- `current_goal` из frontmatter — глобальная цель проекта
|
|
42
|
-
- первый незакрытый пункт `- [ ]` из раздела "Текущий фокус"
|
|
43
|
-
|
|
44
|
-
Если `status.md` не существует → пропустить, продолжить без фокуса.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
**Шаг 3 — Загрузить активные решения**
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
glob: .agent-log/decisions/**/*.md
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Для каждого читать **только первые 15 строк** — frontmatter достаточно.
|
|
55
|
-
|
|
56
|
-
Оставить только: `status: active` или `status: needs_review`. Максимум **7 записей**.
|
|
57
|
-
|
|
58
|
-
Если решений нет → пропустить.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
**Шаг 4 — Прочитать историю из Git**
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
git log -n 5 --pretty=format:"* %h — %s (%ar)"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Последние 5 коммитов в одну строку каждый. Быстро, не читает файловую систему.
|
|
69
|
-
|
|
70
|
-
Если git не инициализирован или репозиторий пустой → пропустить.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
**Шаг 5 — Вывести контекст пользователю**
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
📚 AKMS контекст загружен
|
|
78
|
-
Текущая цель: [current_goal из status.md / "не задана"]
|
|
79
|
-
Активная задача: [первый - [ ] пункт / "нет открытых задач"]
|
|
80
|
-
Последние коммиты:
|
|
81
|
-
* a1b2c3d — feat(auth): add redis support (2 hours ago)
|
|
82
|
-
* ...
|
|
83
|
-
Активные решения: [DEC-0001: заголовок, ...] / нет
|
|
84
|
-
|
|
85
|
-
Работаем.
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
После вывода — сразу переходить к задаче пользователя.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
# Правила
|
|
93
|
-
|
|
94
|
-
- **status.md читать целиком** — он специально короткий, это не расточительство
|
|
95
|
-
- **decisions** — только первые 15 строк (frontmatter), тело не нужно
|
|
96
|
-
- **git log вместо файлов коммитов** — быстрее и всегда актуально
|
|
97
|
-
- **Директорию проверять через `bash ls`** — не через `read`
|
|
98
|
-
- **Не задавать вопросов** — только читать, ничего не менять
|