@jaimevalasek/aioson 1.3.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/CHANGELOG.md +456 -0
- package/CODE_OF_CONDUCT.md +12 -0
- package/CONTRIBUTING.md +13 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/bin/aioson.js +4 -0
- package/docs/en/cli-reference.md +398 -0
- package/docs/en/i18n.md +52 -0
- package/docs/en/json-schemas.md +41 -0
- package/docs/en/mcp.md +56 -0
- package/docs/en/parallel.md +82 -0
- package/docs/en/qa-browser.md +339 -0
- package/docs/en/release-flow.md +22 -0
- package/docs/en/release-notes-template.md +41 -0
- package/docs/en/release.md +28 -0
- package/docs/en/schemas/agent-prompt.schema.json +17 -0
- package/docs/en/schemas/agents.schema.json +32 -0
- package/docs/en/schemas/context-validate.schema.json +36 -0
- package/docs/en/schemas/doctor.schema.json +89 -0
- package/docs/en/schemas/error.schema.json +24 -0
- package/docs/en/schemas/i18n-add.schema.json +15 -0
- package/docs/en/schemas/index.json +116 -0
- package/docs/en/schemas/info.schema.json +39 -0
- package/docs/en/schemas/init.schema.json +48 -0
- package/docs/en/schemas/install.schema.json +60 -0
- package/docs/en/schemas/locale-apply.schema.json +30 -0
- package/docs/en/schemas/mcp-doctor.schema.json +95 -0
- package/docs/en/schemas/mcp-init.schema.json +122 -0
- package/docs/en/schemas/package-test.schema.json +24 -0
- package/docs/en/schemas/parallel-assign.schema.json +57 -0
- package/docs/en/schemas/parallel-doctor.schema.json +86 -0
- package/docs/en/schemas/parallel-init.schema.json +53 -0
- package/docs/en/schemas/parallel-status.schema.json +94 -0
- package/docs/en/schemas/setup-context.schema.json +39 -0
- package/docs/en/schemas/smoke.schema.json +23 -0
- package/docs/en/schemas/update.schema.json +48 -0
- package/docs/en/schemas/workflow-plan.schema.json +30 -0
- package/docs/en/web3.md +54 -0
- package/docs/pt/README.md +46 -0
- package/docs/pt/advisor-spec.md +335 -0
- package/docs/pt/agentes.md +453 -0
- package/docs/pt/cenarios.md +1230 -0
- package/docs/pt/clientes-ai.md +224 -0
- package/docs/pt/comandos-cli.md +511 -0
- package/docs/pt/genome-3.0-spec.md +296 -0
- package/docs/pt/guia-engineer.md +226 -0
- package/docs/pt/inicio-rapido.md +138 -0
- package/docs/pt/profiler-system.md +214 -0
- package/docs/pt/runtime-observability.md +72 -0
- package/docs/pt/squad-genoma.md +777 -0
- package/docs/pt/web3.md +797 -0
- package/docs/testing/genome-2.0-manual-regression.md +23 -0
- package/docs/testing/genome-2.0-matrix.md +36 -0
- package/docs/testing/genome-2.0-rollout.md +184 -0
- package/package.json +50 -0
- package/src/agents.js +56 -0
- package/src/cli.js +497 -0
- package/src/commands/agents.js +142 -0
- package/src/commands/cloud.js +1767 -0
- package/src/commands/config.js +90 -0
- package/src/commands/context-validate.js +91 -0
- package/src/commands/doctor.js +123 -0
- package/src/commands/genome-doctor.js +41 -0
- package/src/commands/genome-migrate.js +49 -0
- package/src/commands/i18n-add.js +56 -0
- package/src/commands/info.js +41 -0
- package/src/commands/init.js +75 -0
- package/src/commands/install.js +68 -0
- package/src/commands/locale-apply.js +51 -0
- package/src/commands/locale-diff.js +126 -0
- package/src/commands/mcp-doctor.js +406 -0
- package/src/commands/mcp-init.js +379 -0
- package/src/commands/package-e2e.js +273 -0
- package/src/commands/parallel-assign.js +403 -0
- package/src/commands/parallel-doctor.js +437 -0
- package/src/commands/parallel-init.js +249 -0
- package/src/commands/parallel-status.js +290 -0
- package/src/commands/qa-doctor.js +185 -0
- package/src/commands/qa-init.js +161 -0
- package/src/commands/qa-report.js +58 -0
- package/src/commands/qa-run.js +873 -0
- package/src/commands/qa-scan.js +337 -0
- package/src/commands/runtime.js +948 -0
- package/src/commands/scan-project.js +1107 -0
- package/src/commands/setup-context.js +650 -0
- package/src/commands/smoke.js +426 -0
- package/src/commands/squad-doctor.js +358 -0
- package/src/commands/squad-export.js +46 -0
- package/src/commands/squad-pipeline.js +97 -0
- package/src/commands/squad-repair-genomes.js +39 -0
- package/src/commands/squad-status.js +424 -0
- package/src/commands/squad-validate.js +230 -0
- package/src/commands/test-agents.js +194 -0
- package/src/commands/update.js +55 -0
- package/src/commands/workflow-next.js +594 -0
- package/src/commands/workflow-plan.js +108 -0
- package/src/constants.js +314 -0
- package/src/context-parse-reason.js +22 -0
- package/src/context-writer.js +150 -0
- package/src/context.js +217 -0
- package/src/detector.js +261 -0
- package/src/doctor.js +289 -0
- package/src/execution-gateway.js +461 -0
- package/src/genome-files.js +198 -0
- package/src/genome-format.js +442 -0
- package/src/genome-schema.js +215 -0
- package/src/genomes/bindings.js +281 -0
- package/src/genomes.js +467 -0
- package/src/i18n/index.js +103 -0
- package/src/i18n/messages/en.js +784 -0
- package/src/i18n/messages/es.js +718 -0
- package/src/i18n/messages/fr.js +725 -0
- package/src/i18n/messages/pt-BR.js +818 -0
- package/src/i18n/scaffold.js +64 -0
- package/src/installer.js +232 -0
- package/src/lib/genomes/compat.js +206 -0
- package/src/lib/genomes/migrate.js +90 -0
- package/src/lib/squads/genome-repair.js +49 -0
- package/src/locales.js +84 -0
- package/src/onboarding.js +305 -0
- package/src/parser.js +53 -0
- package/src/prompt-tool.js +20 -0
- package/src/qa-html-report.js +472 -0
- package/src/runtime-store.js +1527 -0
- package/src/squads/apply-genome.js +21 -0
- package/src/squads/genome-binding-service.js +154 -0
- package/src/updater.js +32 -0
- package/src/utils.js +46 -0
- package/src/version.js +50 -0
- package/template/.aioson/advisors/.gitkeep +1 -0
- package/template/.aioson/agents/analyst.md +225 -0
- package/template/.aioson/agents/architect.md +221 -0
- package/template/.aioson/agents/dev.md +201 -0
- package/template/.aioson/agents/discovery-design-doc.md +196 -0
- package/template/.aioson/agents/genoma.md +300 -0
- package/template/.aioson/agents/orchestrator.md +107 -0
- package/template/.aioson/agents/pm.md +89 -0
- package/template/.aioson/agents/product.md +361 -0
- package/template/.aioson/agents/profiler-enricher.md +266 -0
- package/template/.aioson/agents/profiler-forge.md +188 -0
- package/template/.aioson/agents/profiler-researcher.md +245 -0
- package/template/.aioson/agents/qa.md +344 -0
- package/template/.aioson/agents/setup.md +381 -0
- package/template/.aioson/agents/squad.md +837 -0
- package/template/.aioson/agents/ux-ui.md +416 -0
- package/template/.aioson/config.md +56 -0
- package/template/.aioson/context/.gitkeep +0 -0
- package/template/.aioson/context/parallel/.gitkeep +0 -0
- package/template/.aioson/context/spec.md.template +37 -0
- package/template/.aioson/genomas/.gitkeep +0 -0
- package/template/.aioson/locales/en/agents/analyst.md +214 -0
- package/template/.aioson/locales/en/agents/architect.md +210 -0
- package/template/.aioson/locales/en/agents/dev.md +187 -0
- package/template/.aioson/locales/en/agents/discovery-design-doc.md +27 -0
- package/template/.aioson/locales/en/agents/genoma.md +212 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +105 -0
- package/template/.aioson/locales/en/agents/pm.md +77 -0
- package/template/.aioson/locales/en/agents/product.md +310 -0
- package/template/.aioson/locales/en/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/en/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/en/agents/qa.md +214 -0
- package/template/.aioson/locales/en/agents/setup.md +342 -0
- package/template/.aioson/locales/en/agents/squad.md +247 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +320 -0
- package/template/.aioson/locales/es/agents/analyst.md +203 -0
- package/template/.aioson/locales/es/agents/architect.md +208 -0
- package/template/.aioson/locales/es/agents/dev.md +183 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/es/agents/genoma.md +102 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/es/agents/pm.md +81 -0
- package/template/.aioson/locales/es/agents/product.md +310 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/es/agents/qa.md +163 -0
- package/template/.aioson/locales/es/agents/setup.md +347 -0
- package/template/.aioson/locales/es/agents/squad.md +247 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/fr/agents/analyst.md +203 -0
- package/template/.aioson/locales/fr/agents/architect.md +208 -0
- package/template/.aioson/locales/fr/agents/dev.md +183 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +19 -0
- package/template/.aioson/locales/fr/agents/genoma.md +102 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/fr/agents/pm.md +81 -0
- package/template/.aioson/locales/fr/agents/product.md +310 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/fr/agents/qa.md +163 -0
- package/template/.aioson/locales/fr/agents/setup.md +347 -0
- package/template/.aioson/locales/fr/agents/squad.md +247 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +201 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +213 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +198 -0
- package/template/.aioson/locales/pt-BR/agents/genoma.md +297 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +108 -0
- package/template/.aioson/locales/pt-BR/agents/pm.md +81 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +316 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +5 -0
- package/template/.aioson/locales/pt-BR/agents/qa.md +217 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +371 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +772 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +322 -0
- package/template/.aioson/mcp/servers.md +24 -0
- package/template/.aioson/profiler-reports/.gitkeep +1 -0
- package/template/.aioson/schemas/content-blueprint.schema.json +30 -0
- package/template/.aioson/schemas/genome-meta.schema.json +150 -0
- package/template/.aioson/schemas/genome.schema.json +115 -0
- package/template/.aioson/schemas/readiness.schema.json +27 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +172 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +276 -0
- package/template/.aioson/skills/dynamic/README.md +30 -0
- package/template/.aioson/skills/dynamic/cardano-docs.md +16 -0
- package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -0
- package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -0
- package/template/.aioson/skills/dynamic/laravel-docs.md +41 -0
- package/template/.aioson/skills/dynamic/npm-packages.md +16 -0
- package/template/.aioson/skills/dynamic/solana-docs.md +16 -0
- package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -0
- package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -0
- package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -0
- package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -0
- package/template/.aioson/skills/static/django-patterns.md +342 -0
- package/template/.aioson/skills/static/fastapi-patterns.md +344 -0
- package/template/.aioson/skills/static/filament-patterns.md +267 -0
- package/template/.aioson/skills/static/flux-ui-components.md +262 -0
- package/template/.aioson/skills/static/git-conventions.md +227 -0
- package/template/.aioson/skills/static/interface-design.md +372 -0
- package/template/.aioson/skills/static/jetstream-setup.md +200 -0
- package/template/.aioson/skills/static/laravel-conventions.md +491 -0
- package/template/.aioson/skills/static/nextjs-patterns.md +321 -0
- package/template/.aioson/skills/static/node-express-patterns.md +317 -0
- package/template/.aioson/skills/static/node-typescript-patterns.md +282 -0
- package/template/.aioson/skills/static/premium-command-center-ui.md +190 -0
- package/template/.aioson/skills/static/rails-conventions.md +307 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +577 -0
- package/template/.aioson/skills/static/static-html-patterns.md +1935 -0
- package/template/.aioson/skills/static/tall-stack-patterns.md +286 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +75 -0
- package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -0
- package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -0
- package/template/.aioson/skills/static/web3-security-checklist.md +284 -0
- package/template/.aioson/skills/static/web3-solana-patterns.md +324 -0
- package/template/.aioson/squads/.artisan/.gitkeep +0 -0
- package/template/.aioson/squads/.gitkeep +0 -0
- package/template/.aioson/squads/memory.md +5 -0
- package/template/.aioson/tasks/squad-analyze.md +83 -0
- package/template/.aioson/tasks/squad-create.md +99 -0
- package/template/.aioson/tasks/squad-design.md +100 -0
- package/template/.aioson/tasks/squad-export.md +20 -0
- package/template/.aioson/tasks/squad-extend.md +68 -0
- package/template/.aioson/tasks/squad-pipeline.md +122 -0
- package/template/.aioson/tasks/squad-repair.md +85 -0
- package/template/.aioson/tasks/squad-validate.md +58 -0
- package/template/.aioson/templates/squads/content-basic/template.json +21 -0
- package/template/.aioson/templates/squads/media-channel/template.json +24 -0
- package/template/.aioson/templates/squads/research-analysis/template.json +22 -0
- package/template/.aioson/templates/squads/software-delivery/template.json +21 -0
- package/template/.claude/commands/aioson/analyst.md +5 -0
- package/template/.claude/commands/aioson/architect.md +5 -0
- package/template/.claude/commands/aioson/dev.md +5 -0
- package/template/.claude/commands/aioson/orchestrator.md +5 -0
- package/template/.claude/commands/aioson/pm.md +5 -0
- package/template/.claude/commands/aioson/qa.md +5 -0
- package/template/.claude/commands/aioson/setup.md +5 -0
- package/template/.claude/commands/aioson/ux-ui.md +5 -0
- package/template/.gemini/GEMINI.md +10 -0
- package/template/.gemini/commands/aios-analyst.toml +4 -0
- package/template/.gemini/commands/aios-architect.toml +7 -0
- package/template/.gemini/commands/aios-dev.toml +8 -0
- package/template/.gemini/commands/aios-discovery-design-doc.toml +4 -0
- package/template/.gemini/commands/aios-orchestrator.toml +8 -0
- package/template/.gemini/commands/aios-pm.toml +8 -0
- package/template/.gemini/commands/aios-product.toml +4 -0
- package/template/.gemini/commands/aios-qa.toml +6 -0
- package/template/.gemini/commands/aios-setup.toml +3 -0
- package/template/.gemini/commands/aios-ux-ui.toml +8 -0
- package/template/AGENTS.md +67 -0
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +24 -0
- package/template/aioson-models.json +40 -0
package/docs/en/i18n.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# i18n Guide
|
|
2
|
+
|
|
3
|
+
AIOSON CLI supports localization through message dictionaries.
|
|
4
|
+
|
|
5
|
+
## How it works
|
|
6
|
+
- Dictionaries are stored in `src/i18n/messages/`.
|
|
7
|
+
- `src/i18n/index.js` resolves locale and fallback behavior.
|
|
8
|
+
- Commands use translation keys instead of hardcoded strings.
|
|
9
|
+
- Agent templates read `conversation_language` from `.aioson/context/project.context.md` and should use it for interaction/output language.
|
|
10
|
+
- Localized agent packs live in `.aioson/locales/<locale>/agents/` and can be applied to active prompts with `aioson locale:apply`.
|
|
11
|
+
|
|
12
|
+
## Runtime selection
|
|
13
|
+
- CLI option: `--locale=en`
|
|
14
|
+
- Env var: `AIOS_LITE_LOCALE=en`
|
|
15
|
+
- Default: `en`
|
|
16
|
+
|
|
17
|
+
Built-in locales:
|
|
18
|
+
- `en`
|
|
19
|
+
- `pt-BR`
|
|
20
|
+
- `es`
|
|
21
|
+
- `fr`
|
|
22
|
+
|
|
23
|
+
Built-in localized agent packs:
|
|
24
|
+
- `en`
|
|
25
|
+
- `pt-BR`
|
|
26
|
+
- `es`
|
|
27
|
+
- `fr`
|
|
28
|
+
|
|
29
|
+
Resolution behavior:
|
|
30
|
+
- `pt-BR`, `pt_br`, and `pt` resolve to `pt-BR` dictionary.
|
|
31
|
+
- `es-MX` and other `es-*` variants resolve to `es`.
|
|
32
|
+
- `fr-CA` and other `fr-*` variants resolve to `fr`.
|
|
33
|
+
- Unknown locales fall back to `en`.
|
|
34
|
+
|
|
35
|
+
## Create a locale scaffold
|
|
36
|
+
```bash
|
|
37
|
+
aioson i18n:add fr
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Apply localized agent prompts
|
|
41
|
+
```bash
|
|
42
|
+
# Use language from project.context.md
|
|
43
|
+
aioson locale:apply
|
|
44
|
+
|
|
45
|
+
# Or force a locale
|
|
46
|
+
aioson locale:apply --lang=pt-BR
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Add a new locale
|
|
50
|
+
1. Run `aioson i18n:add <locale>`.
|
|
51
|
+
2. Replace English strings in `src/i18n/messages/<locale>.js`.
|
|
52
|
+
3. Add tests for locale resolution and fallback behavior.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# JSON Schemas
|
|
2
|
+
|
|
3
|
+
AIOSON exposes machine-readable JSON output on selected commands.
|
|
4
|
+
|
|
5
|
+
This folder provides formal schemas for automation:
|
|
6
|
+
- `docs/en/schemas/index.json`
|
|
7
|
+
- `docs/en/schemas/*.schema.json`
|
|
8
|
+
|
|
9
|
+
## Commands covered
|
|
10
|
+
- `aioson init <project-name> --json`
|
|
11
|
+
- `aioson install [path] --json`
|
|
12
|
+
- `aioson update [path] --json`
|
|
13
|
+
- `aioson info --json`
|
|
14
|
+
- `aioson agents [path] --json`
|
|
15
|
+
- `aioson agent:prompt <agent> [path] --json`
|
|
16
|
+
- `aioson locale:apply [path] --json`
|
|
17
|
+
- `aioson setup:context [path] --defaults --json`
|
|
18
|
+
- `aioson i18n:add <locale> --dry-run --json`
|
|
19
|
+
- `aioson doctor --json`
|
|
20
|
+
- `aioson context:validate --json`
|
|
21
|
+
- `aioson test:smoke --json`
|
|
22
|
+
- `aioson mcp:init --json`
|
|
23
|
+
- `aioson mcp:doctor --json`
|
|
24
|
+
- `aioson test:package --json`
|
|
25
|
+
- `aioson workflow:plan --json`
|
|
26
|
+
- `aioson parallel:init --json`
|
|
27
|
+
- `aioson parallel:assign --json`
|
|
28
|
+
- `aioson parallel:status --json`
|
|
29
|
+
- `aioson parallel:doctor --json`
|
|
30
|
+
- Generic CLI JSON errors (`unknown_command`, `command_error`)
|
|
31
|
+
|
|
32
|
+
## Compatibility policy
|
|
33
|
+
- Keys listed in each schema `required` array are stable for automation.
|
|
34
|
+
- New optional keys may be added in future releases.
|
|
35
|
+
- Removing or renaming required keys is a breaking change and must be called out in release notes.
|
|
36
|
+
|
|
37
|
+
## Suggested validation flow
|
|
38
|
+
1. Load schema from `docs/en/schemas/index.json`.
|
|
39
|
+
2. Validate command output against the corresponding schema.
|
|
40
|
+
3. Treat missing required keys as contract breakage.
|
|
41
|
+
4. Ignore unknown keys unless your integration explicitly disallows them.
|
package/docs/en/mcp.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# MCP Guide
|
|
2
|
+
|
|
3
|
+
AIOSON provides lightweight MCP planning and validation for multi-tool usage.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
### `mcp:init`
|
|
8
|
+
Generate a local MCP plan and tool presets:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
aioson mcp:init
|
|
12
|
+
aioson mcp:init --dry-run
|
|
13
|
+
aioson mcp:init --tool=codex
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Outputs:
|
|
17
|
+
- `.aioson/mcp/servers.local.json`
|
|
18
|
+
- `.aioson/mcp/presets/<tool>.json`
|
|
19
|
+
|
|
20
|
+
Preset strategy:
|
|
21
|
+
- Context7 and Database presets are generated in a remote-endpoint mode using `mcp-remote`.
|
|
22
|
+
- This removes generic `<...>` placeholders and gives executable command templates.
|
|
23
|
+
|
|
24
|
+
### `mcp:doctor`
|
|
25
|
+
Validate MCP readiness:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
aioson mcp:doctor
|
|
29
|
+
aioson mcp:doctor --strict-env
|
|
30
|
+
aioson mcp:doctor --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Checks include:
|
|
34
|
+
- `servers.local.json` existence and JSON validity
|
|
35
|
+
- Core server baseline (`filesystem`, `context7`)
|
|
36
|
+
- Preset coverage (`claude`, `codex`, `gemini`, `opencode`)
|
|
37
|
+
- Required environment variables from enabled servers
|
|
38
|
+
- Context compatibility for database and Web3 (`chain-rpc`)
|
|
39
|
+
|
|
40
|
+
## Strict environment mode
|
|
41
|
+
- Default mode reports missing env vars as warnings.
|
|
42
|
+
- `--strict-env` upgrades missing env vars to failures.
|
|
43
|
+
|
|
44
|
+
Use strict mode in CI when you want runtime-ready MCP validation gates.
|
|
45
|
+
|
|
46
|
+
## Required environment variables (common)
|
|
47
|
+
- `CONTEXT7_MCP_URL` for Context7 endpoint
|
|
48
|
+
- `DATABASE_MCP_URL` when database MCP is enabled by project stack
|
|
49
|
+
- `RPC_URL`, `CHAIN_ID`, `PRIVATE_KEY` for Web3 `chain-rpc` profile
|
|
50
|
+
|
|
51
|
+
Example:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
export CONTEXT7_MCP_URL="https://your-context7-endpoint"
|
|
55
|
+
export DATABASE_MCP_URL="https://your-database-mcp-endpoint"
|
|
56
|
+
```
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Parallel Orchestration Guide
|
|
2
|
+
|
|
3
|
+
Use `parallel:init` to bootstrap the parallel context files used by `@orchestrator`.
|
|
4
|
+
|
|
5
|
+
## Command
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
aioson parallel:init [path] [--workers=2..6] [--force] [--dry-run] [--json]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Aliases:
|
|
12
|
+
- `aioson orchestrator:init`
|
|
13
|
+
- `aioson parallel-init`
|
|
14
|
+
|
|
15
|
+
## Behavior
|
|
16
|
+
- Requires parseable `.aioson/context/project.context.md`.
|
|
17
|
+
- Only allows `classification=MEDIUM` by default.
|
|
18
|
+
- Use `--force` to initialize for other classifications.
|
|
19
|
+
- Generates:
|
|
20
|
+
- `.aioson/context/parallel/shared-decisions.md`
|
|
21
|
+
- `.aioson/context/parallel/agent-N.status.md`
|
|
22
|
+
|
|
23
|
+
## Prerequisite checks
|
|
24
|
+
The command reports whether these files are present:
|
|
25
|
+
- `.aioson/context/discovery.md`
|
|
26
|
+
- `.aioson/context/architecture.md`
|
|
27
|
+
- `.aioson/context/prd.md`
|
|
28
|
+
|
|
29
|
+
Missing prerequisites are reported but do not block file generation.
|
|
30
|
+
|
|
31
|
+
## Scope assignment
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
aioson parallel:assign
|
|
35
|
+
aioson parallel:assign --source=architecture --workers=3
|
|
36
|
+
aioson parallel:assign --source=prd
|
|
37
|
+
aioson parallel:assign --dry-run
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Aliases:
|
|
41
|
+
- `aioson orchestrator:assign`
|
|
42
|
+
- `aioson parallel-assign`
|
|
43
|
+
|
|
44
|
+
Behavior:
|
|
45
|
+
- Reads scope candidates from `prd`, `architecture`, or `discovery` context docs.
|
|
46
|
+
- Distributes scope items across lane files in round-robin mode.
|
|
47
|
+
- Updates `## Scope` section and `updated_at` in each lane file.
|
|
48
|
+
- Appends a decision-log entry to `shared-decisions.md` when present.
|
|
49
|
+
|
|
50
|
+
## Status overview
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
aioson parallel:status
|
|
54
|
+
aioson parallel:status --json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Aliases:
|
|
58
|
+
- `aioson orchestrator:status`
|
|
59
|
+
- `aioson parallel-status`
|
|
60
|
+
|
|
61
|
+
Behavior:
|
|
62
|
+
- Reads all `agent-N.status.md` lane files under `.aioson/context/parallel`.
|
|
63
|
+
- Aggregates lane status counts, scope counts, blocker counts, and deliverable progress.
|
|
64
|
+
- Includes shared decision log entry count from `shared-decisions.md` when present.
|
|
65
|
+
- Returns a structured machine-readable report with `--json`.
|
|
66
|
+
|
|
67
|
+
## Diagnose and repair
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
aioson parallel:doctor
|
|
71
|
+
aioson parallel:doctor --workers=3
|
|
72
|
+
aioson parallel:doctor --fix
|
|
73
|
+
aioson parallel:doctor --fix --dry-run
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Aliases:
|
|
77
|
+
- `aioson orchestrator:doctor`
|
|
78
|
+
- `aioson parallel-doctor`
|
|
79
|
+
|
|
80
|
+
Notes:
|
|
81
|
+
- `--fix` can recreate missing `shared-decisions.md` and missing lane files.
|
|
82
|
+
- For non-`MEDIUM` projects, `--fix` requires `--force`.
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# QA Browser Testing Guide
|
|
2
|
+
|
|
3
|
+
AIOSON includes a built-in browser QA engine powered by [Playwright](https://playwright.dev). It opens a real Chrome browser, runs automated tests across multiple personas, and generates a report in the same format as the `@qa` agent — so both can be used together.
|
|
4
|
+
|
|
5
|
+
No LLM required. No separate tool to install beyond Playwright itself.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g playwright
|
|
13
|
+
npx playwright install chromium
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Verify everything is ready:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
aioson qa:doctor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# 1. Generate config (reads prd.md and discovery.md automatically)
|
|
28
|
+
aioson qa:init --url=http://localhost:3000
|
|
29
|
+
|
|
30
|
+
# 2. Start your application, then run
|
|
31
|
+
aioson qa:run
|
|
32
|
+
|
|
33
|
+
# 3. View the report
|
|
34
|
+
aioson qa:report
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Output files written to the project root:
|
|
38
|
+
- `aios-qa-report.md` — full report (same severity format as `@qa`)
|
|
39
|
+
- `aios-qa-report.json` — machine-readable for CI/CD
|
|
40
|
+
- `aios-qa-screenshots/` — screenshot evidence per finding
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Commands
|
|
45
|
+
|
|
46
|
+
### `qa:init`
|
|
47
|
+
|
|
48
|
+
Generates `aios-qa.config.json` from your project context.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
aioson qa:init [path] [--url=<app-url>] [--dry-run] [--json]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If `.aioson/context/project.context.md` exists, the project name and language are read automatically. If `prd.md` exists, acceptance criteria are extracted and added as test scenarios.
|
|
55
|
+
|
|
56
|
+
**Flags:**
|
|
57
|
+
|
|
58
|
+
| Flag | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `--url=<url>` | Target application URL (default: `http://localhost:3000`) |
|
|
61
|
+
| `--dry-run` | Preview config without writing |
|
|
62
|
+
| `--json` | Output result as JSON |
|
|
63
|
+
|
|
64
|
+
**Example output — `aios-qa.config.json`:**
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"project_name": "MyApp",
|
|
69
|
+
"url": "http://localhost:3000",
|
|
70
|
+
"language": "en",
|
|
71
|
+
"personas": ["naive", "hacker", "power", "mobile"],
|
|
72
|
+
"security_probes": [
|
|
73
|
+
"exposed_env_vars", "xss_inputs", "open_redirect",
|
|
74
|
+
"sensitive_files", "idor_probe", "console_leaks",
|
|
75
|
+
"debug_routes", "mixed_content", "sensitive_get_params"
|
|
76
|
+
],
|
|
77
|
+
"performance_thresholds": {
|
|
78
|
+
"page_load_ms": 3000,
|
|
79
|
+
"ttfb_ms": 800,
|
|
80
|
+
"requests_max": 80,
|
|
81
|
+
"transfer_max_kb": 2048
|
|
82
|
+
},
|
|
83
|
+
"accessibility": true,
|
|
84
|
+
"network_capture": true,
|
|
85
|
+
"screenshot_on_finding": true,
|
|
86
|
+
"scenarios": []
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### `qa:doctor`
|
|
93
|
+
|
|
94
|
+
Checks all prerequisites before running tests.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
aioson qa:doctor [path] [--json]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Checks performed:**
|
|
101
|
+
|
|
102
|
+
| Check | Severity |
|
|
103
|
+
|-------|----------|
|
|
104
|
+
| Playwright package installed | Error |
|
|
105
|
+
| Chromium binary found | Error |
|
|
106
|
+
| `aios-qa.config.json` exists and is valid JSON | Error |
|
|
107
|
+
| Target URL is reachable | Warning |
|
|
108
|
+
| `project.context.md` present (enriches tests) | Warning |
|
|
109
|
+
| `prd.md` present (enables AC coverage) | Warning |
|
|
110
|
+
|
|
111
|
+
**Example:**
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
[OK] playwright.installed - Playwright is installed.
|
|
115
|
+
[OK] chromium.binary - Chromium browser binary found.
|
|
116
|
+
[OK] config.exists - aios-qa.config.json found and valid.
|
|
117
|
+
[OK] url.reachable - Target URL is reachable (http://localhost:3000).
|
|
118
|
+
[OK] context.exists - project.context.md found.
|
|
119
|
+
[WARN] prd.md — prd.md not found — AC coverage mapping will be skipped.
|
|
120
|
+
Summary: 5 passed, 0 failed, 1 warnings.
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### `qa:run`
|
|
126
|
+
|
|
127
|
+
Runs a full browser QA session: 4 personas, security probes, accessibility audit, performance capture, and AC coverage.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
aioson qa:run [path] [--url=<app-url>] [--persona=naive|hacker|power|mobile] [--headed] [--html] [--json]
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Flags:**
|
|
134
|
+
|
|
135
|
+
| Flag | Description |
|
|
136
|
+
|------|-------------|
|
|
137
|
+
| `--url=<url>` | Override URL from config |
|
|
138
|
+
| `--persona=<name>` | Run only one persona |
|
|
139
|
+
| `--headed` | Show browser window (useful for debugging) |
|
|
140
|
+
| `--html` | Also generate an HTML report in `reports/<run-id>/index.html` |
|
|
141
|
+
| `--json` | Output result as JSON |
|
|
142
|
+
|
|
143
|
+
#### Personas
|
|
144
|
+
|
|
145
|
+
**`naive` — Clumsy user**
|
|
146
|
+
- Submits all forms empty → detects unhandled 5xx
|
|
147
|
+
- Types 10,000-character strings → detects missing length validation
|
|
148
|
+
- Clicks elements with `cursor:pointer` that have no handler → detects ghost clickables
|
|
149
|
+
|
|
150
|
+
**`hacker` — Attacker mindset**
|
|
151
|
+
- Scans `window.__NEXT_DATA__`, `window.__env__`, `window.ENV`, `window.CONFIG` for exposed secrets (OpenAI, Stripe, AWS, Google, GitHub, Slack patterns)
|
|
152
|
+
- Scans rendered HTML source for the same patterns
|
|
153
|
+
- Tries 10 sensitive file URLs: `/.env`, `/.env.local`, `/.env.production`, `/.git/config`, `/config.js`, and more
|
|
154
|
+
- Injects XSS payload in all text inputs, detects execution
|
|
155
|
+
- Probes 8 redirect parameters for open redirect
|
|
156
|
+
- Types SQL injection payload, detects DB error messages in response
|
|
157
|
+
- Tests IDOR: increments/decrements numeric IDs in URL by ±1 and +9999
|
|
158
|
+
- Checks 8 debug/admin routes for unauthenticated access
|
|
159
|
+
|
|
160
|
+
**`power` — Keyboard-only, boundary values**
|
|
161
|
+
- Tabs through all interactive elements, detects missing visible focus indicator
|
|
162
|
+
- Enters boundary values in number/range inputs: `-999999999`, `0`, `999999999999999`
|
|
163
|
+
- Enters edge dates: `1900-01-01`, `9999-12-31`, `2000-02-29`
|
|
164
|
+
|
|
165
|
+
**`mobile` — iPhone SE (375×667)**
|
|
166
|
+
- Detects horizontal overflow (content wider than viewport)
|
|
167
|
+
- Flags touch targets smaller than 44×44px (WCAG 2.5.5)
|
|
168
|
+
- Flags text smaller than 12px
|
|
169
|
+
|
|
170
|
+
#### Security probes (post-persona, network layer)
|
|
171
|
+
- Console errors containing stack traces → Medium finding
|
|
172
|
+
- Sensitive parameter names (`token`, `password`, `api_key`) in GET URLs → High finding
|
|
173
|
+
- HTTP requests from HTTPS page (mixed content) → Medium finding
|
|
174
|
+
|
|
175
|
+
#### Accessibility audit
|
|
176
|
+
- Images missing `alt` attribute (WCAG 1.1.1)
|
|
177
|
+
- Form inputs with no accessible label (WCAG 1.3.1)
|
|
178
|
+
- Buttons with no accessible name (WCAG 4.1.2)
|
|
179
|
+
- Heading levels skipped (e.g. `h1` → `h3`)
|
|
180
|
+
- `<html>` missing `lang` attribute (WCAG 3.1.1)
|
|
181
|
+
|
|
182
|
+
#### Performance capture
|
|
183
|
+
| Metric | Default threshold |
|
|
184
|
+
|--------|------------------|
|
|
185
|
+
| Page load complete | 3000ms |
|
|
186
|
+
| Time to First Byte (TTFB) | 800ms |
|
|
187
|
+
| Network request count | 80 |
|
|
188
|
+
| Total transfer size | 2048KB |
|
|
189
|
+
|
|
190
|
+
Thresholds are configurable in `aios-qa.config.json` under `performance_thresholds`.
|
|
191
|
+
|
|
192
|
+
#### AC coverage
|
|
193
|
+
If `prd.md` exists, acceptance criteria are extracted from the table and 🔴 must-have items. For each AC, a screenshot is taken of the current page state and saved to `aios-qa-screenshots/`.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### `qa:scan`
|
|
198
|
+
|
|
199
|
+
Autonomous crawl mode. No pre-defined scenarios needed — the tool discovers all routes and probes each one.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
aioson qa:scan [path] [--url=<app-url>] [--depth=3] [--max-pages=50] [--headed] [--html] [--json]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Flags:**
|
|
206
|
+
|
|
207
|
+
| Flag | Default | Description |
|
|
208
|
+
|------|---------|-------------|
|
|
209
|
+
| `--url=<url>` | from config | Override base URL |
|
|
210
|
+
| `--depth=<n>` | `3` | Max crawl depth from base URL |
|
|
211
|
+
| `--max-pages=<n>` | `50` | Max pages to visit |
|
|
212
|
+
| `--headed` | false | Show browser window |
|
|
213
|
+
| `--html` | false | Also generate an HTML report in `reports/<run-id>/index.html` |
|
|
214
|
+
| `--json` | false | Output result as JSON |
|
|
215
|
+
|
|
216
|
+
**What it does on each route:**
|
|
217
|
+
- Scans HTML source and window globals for exposed secrets
|
|
218
|
+
- Checks for stack trace leakage in console errors
|
|
219
|
+
- Accessibility quick check (images alt, html lang)
|
|
220
|
+
- Horizontal overflow detection
|
|
221
|
+
|
|
222
|
+
Sensitive files (`/.env`, `/.git/config`, etc.) are probed once per domain at the start of the scan.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### `qa:report`
|
|
227
|
+
|
|
228
|
+
Displays the last generated report.
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
aioson qa:report [path] [--html] [--json]
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
| Flag | Description |
|
|
235
|
+
|------|-------------|
|
|
236
|
+
| `--html` | Regenerate an HTML report from the existing `aios-qa-report.json` |
|
|
237
|
+
| `--json` | Return the parsed `aios-qa-report.json` as JSON |
|
|
238
|
+
|
|
239
|
+
In default mode, prints `aios-qa-report.md` to the terminal.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Integration with @qa agent
|
|
244
|
+
|
|
245
|
+
When the `@qa` agent runs, it automatically checks for `aios-qa-report.md` in the project root. If found, it:
|
|
246
|
+
|
|
247
|
+
1. Maps browser findings to AC status — any AC that failed in the browser is marked **Missing**
|
|
248
|
+
2. Promotes severity — if both static review and browser test flag the same issue, severity goes up one level
|
|
249
|
+
3. Adds a **Browser findings (aios-qa)** subsection to its report
|
|
250
|
+
4. Tags ACs that passed in the browser with `[browser-validated]`
|
|
251
|
+
|
|
252
|
+
This means running `aioson qa:run` before `@qa` gives you a richer, more complete QA report with zero extra effort.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Typical workflow
|
|
257
|
+
|
|
258
|
+
Two terminals, running in parallel:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# Terminal 1 — aioson agents
|
|
262
|
+
@setup → @product → @analyst → @architect → @dev
|
|
263
|
+
|
|
264
|
+
# Terminal 2 — browser QA (while app is running)
|
|
265
|
+
aioson qa:init --url=http://localhost:3000
|
|
266
|
+
aioson qa:run
|
|
267
|
+
|
|
268
|
+
# Terminal 1 — continues with merged findings
|
|
269
|
+
@qa # reads aios-qa-report.md automatically
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## HTML reports
|
|
275
|
+
|
|
276
|
+
Add `--html` to `qa:run` or `qa:scan` to generate a self-contained visual report alongside the default MD/JSON outputs.
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
aioson qa:run --html
|
|
280
|
+
aioson qa:scan --html
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Or generate HTML retroactively from an existing run:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
aioson qa:report --html
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Output structure:**
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
reports/
|
|
293
|
+
index.html ← historical index of all runs
|
|
294
|
+
2026-03-04_15-30-00_run/
|
|
295
|
+
index.html ← full report (self-contained)
|
|
296
|
+
meta.json ← run metadata for the index
|
|
297
|
+
2026-03-04_14-00-00_scan/
|
|
298
|
+
index.html
|
|
299
|
+
meta.json
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Features:**
|
|
303
|
+
- Screenshots embedded as base64 — no external file references, fully portable for sharing
|
|
304
|
+
- Severity filter buttons (All / Critical / High / Medium / Low)
|
|
305
|
+
- Collapsible finding cards with location, risk, fix, and screenshot
|
|
306
|
+
- Performance cards with colour-coded thresholds
|
|
307
|
+
- AC coverage table (when `prd.md` was used)
|
|
308
|
+
- Routes discovered list (scan mode)
|
|
309
|
+
- Click-to-zoom screenshot lightbox
|
|
310
|
+
- `reports/index.html` auto-updated after each run with a sortable history table
|
|
311
|
+
|
|
312
|
+
The MD and JSON outputs are never modified — `--html` is purely additive.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## CI/CD integration
|
|
317
|
+
|
|
318
|
+
`aios-qa-report.json` is written alongside the markdown report and is suitable for CI pipelines:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
aioson qa:run --json | jq '.summary'
|
|
322
|
+
# { "critical": 0, "high": 1, "medium": 3, "low": 2 }
|
|
323
|
+
|
|
324
|
+
# Fail CI if any critical findings
|
|
325
|
+
aioson qa:run --json | jq 'if .summary.critical > 0 then error else . end'
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
For headless environments, Playwright runs in headless mode by default (no `--headed` flag needed in CI).
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Report severity reference
|
|
333
|
+
|
|
334
|
+
| Severity | Examples |
|
|
335
|
+
|----------|---------|
|
|
336
|
+
| **Critical** | Exposed API key, XSS executed, sensitive file accessible, SQL error exposed |
|
|
337
|
+
| **High** | IDOR potential, open redirect, 5xx on empty form, sensitive param in GET URL |
|
|
338
|
+
| **Medium** | Missing auth on debug route, console stack traces, TTFB > 800ms, accessibility violations |
|
|
339
|
+
| **Low** | Ghost clickable elements, touch targets < 44px, fonts < 12px, missing lang attribute |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Release Tag Flow
|
|
2
|
+
|
|
3
|
+
## Preconditions
|
|
4
|
+
- Git repository initialized and connected to GitHub.
|
|
5
|
+
- `NPM_TOKEN` configured in repository secrets.
|
|
6
|
+
- `main` branch green in CI.
|
|
7
|
+
|
|
8
|
+
## Steps
|
|
9
|
+
1. Update `CHANGELOG.md` and `package.json` version.
|
|
10
|
+
2. Run local validation:
|
|
11
|
+
- `npm run ci`
|
|
12
|
+
3. Commit release changes.
|
|
13
|
+
4. Create tag:
|
|
14
|
+
- `git tag vX.Y.Z`
|
|
15
|
+
5. Push branch and tag:
|
|
16
|
+
- `git push origin main --tags`
|
|
17
|
+
6. Watch `Release` workflow in GitHub Actions.
|
|
18
|
+
7. Publish GitHub release using `.github/release-notes-template.md`.
|
|
19
|
+
|
|
20
|
+
## Verify publication
|
|
21
|
+
- `npm view @jaimevalasek/aioson version`
|
|
22
|
+
- `npx @jaimevalasek/aioson@latest info`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Release Notes Template
|
|
2
|
+
|
|
3
|
+
## AIOSON vX.Y.Z
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
- [short summary 1]
|
|
7
|
+
- [short summary 2]
|
|
8
|
+
- [short summary 3]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- [feature]
|
|
12
|
+
- [feature]
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- [change]
|
|
16
|
+
- [change]
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- [bug fix]
|
|
20
|
+
- [bug fix]
|
|
21
|
+
|
|
22
|
+
### CLI
|
|
23
|
+
- Commands impacted: `[list]`
|
|
24
|
+
- Breaking changes: `yes/no` (if yes, describe migration)
|
|
25
|
+
|
|
26
|
+
### i18n
|
|
27
|
+
- New locale scaffolds or translation keys:
|
|
28
|
+
- [item]
|
|
29
|
+
|
|
30
|
+
### Upgrade notes
|
|
31
|
+
1. Update package:
|
|
32
|
+
- `npx @jaimevalasek/aioson@latest update`
|
|
33
|
+
2. Run health check:
|
|
34
|
+
- `aioson doctor`
|
|
35
|
+
3. Verify local customizations in `.aioson/backups/` if applicable.
|
|
36
|
+
|
|
37
|
+
### Checks
|
|
38
|
+
- [ ] Lint passed
|
|
39
|
+
- [ ] Tests passed
|
|
40
|
+
- [ ] Smoke test passed
|
|
41
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Release Guide
|
|
2
|
+
|
|
3
|
+
## CI
|
|
4
|
+
- Workflow: `.github/workflows/ci.yml`
|
|
5
|
+
- Triggers: push to `main`, pull requests
|
|
6
|
+
- Steps: install, lint, test, `npm pack --dry-run`
|
|
7
|
+
|
|
8
|
+
## npm publish
|
|
9
|
+
- Workflow: `.github/workflows/release.yml`
|
|
10
|
+
- Triggers: `v*` git tags or manual dispatch
|
|
11
|
+
- Required secret: `NPM_TOKEN`
|
|
12
|
+
|
|
13
|
+
## npm package name
|
|
14
|
+
The published package name is `@jaimevalasek/aioson`.
|
|
15
|
+
|
|
16
|
+
The unscoped name `aioson` was rejected by npm because it is considered too similar to an existing package, so releases should use the scoped package.
|
|
17
|
+
|
|
18
|
+
## Recommended release flow
|
|
19
|
+
1. Update `CHANGELOG.md`.
|
|
20
|
+
2. Bump version in `package.json`.
|
|
21
|
+
3. Commit and push to `main`.
|
|
22
|
+
4. Create and push a tag like `v0.1.1`.
|
|
23
|
+
5. Verify publish logs in GitHub Actions or in the local npm publish output.
|
|
24
|
+
|
|
25
|
+
## Templates
|
|
26
|
+
- Release notes template: `.github/release-notes-template.md`
|
|
27
|
+
- Extended release notes guide: `docs/en/release-notes-template.md`
|
|
28
|
+
- Tag flow checklist: `docs/en/release-flow.md`
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://aiosforge.dev/schemas/agent-prompt.schema.json",
|
|
4
|
+
"title": "AIOSON agent:prompt --json output",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["ok", "targetDir", "agent", "tool", "locale", "instructionPath", "prompt"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"ok": { "type": "boolean", "const": true },
|
|
9
|
+
"targetDir": { "type": "string" },
|
|
10
|
+
"agent": { "type": "string" },
|
|
11
|
+
"tool": { "type": "string" },
|
|
12
|
+
"locale": { "type": "string" },
|
|
13
|
+
"instructionPath": { "type": "string" },
|
|
14
|
+
"prompt": { "type": "string" }
|
|
15
|
+
},
|
|
16
|
+
"additionalProperties": true
|
|
17
|
+
}
|