@hegemonart/get-design-done 1.40.0 → 1.41.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.
Files changed (40) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +78 -0
  4. package/README.md +8 -0
  5. package/SKILL.md +1 -0
  6. package/agents/README.md +1 -0
  7. package/agents/design-auditor.md +5 -6
  8. package/bin/gdd-detect +20 -0
  9. package/package.json +4 -1
  10. package/reference/anti-patterns.md +26 -0
  11. package/reference/cli-localization.md +61 -0
  12. package/reference/config-schema.md +8 -0
  13. package/reference/registry.json +7 -0
  14. package/reference/schemas/config.schema.json +5 -0
  15. package/reference/schemas/generated.d.ts +4 -0
  16. package/scripts/lib/detect/cli.cjs +111 -0
  17. package/scripts/lib/detect/engine.cjs +83 -0
  18. package/scripts/lib/detect/rule-schema.json +31 -0
  19. package/scripts/lib/detect/rules/ban-01.cjs +33 -0
  20. package/scripts/lib/detect/rules/ban-02.cjs +33 -0
  21. package/scripts/lib/detect/rules/ban-03.cjs +33 -0
  22. package/scripts/lib/detect/rules/ban-05.cjs +33 -0
  23. package/scripts/lib/detect/rules/ban-06.cjs +33 -0
  24. package/scripts/lib/detect/rules/ban-07.cjs +33 -0
  25. package/scripts/lib/detect/rules/ban-08.cjs +33 -0
  26. package/scripts/lib/detect/rules/ban-09.cjs +33 -0
  27. package/scripts/lib/detect/rules/ban-11.cjs +33 -0
  28. package/scripts/lib/detect/rules/ban-12.cjs +33 -0
  29. package/scripts/lib/detect/rules/ban-13.cjs +33 -0
  30. package/scripts/lib/detect/rules/index.cjs +21 -0
  31. package/scripts/lib/i18n/index.cjs +95 -0
  32. package/scripts/lib/i18n/messages/de.json +7 -0
  33. package/scripts/lib/i18n/messages/en.json +27 -0
  34. package/scripts/lib/i18n/messages/fr.json +7 -0
  35. package/scripts/lib/i18n/messages/ja.json +7 -0
  36. package/scripts/lib/i18n/messages/ru.json +27 -0
  37. package/scripts/lib/i18n/messages/uk.json +7 -0
  38. package/scripts/lib/i18n/messages/zh.json +7 -0
  39. package/skills/locale/SKILL.md +51 -0
  40. package/skills/quality-gate/SKILL.md +1 -1
@@ -0,0 +1,27 @@
1
+ {
2
+ "_meta": { "locale": "ru", "coverage": "complete", "fallback": "en" },
3
+ "help.usage": "Использование: gdd <команда> [параметры]",
4
+ "help.tagline": "Конвейер качества дизайна для ИИ-агентов программирования.",
5
+ "help.commands_header": "Команды",
6
+ "help.options_header": "Параметры",
7
+ "help.more": "Выполните `gdd help <команда>` для подробностей о команде.",
8
+ "help.pipeline": "Конвейер: brief -> explore -> plan -> design -> verify",
9
+ "error.no_state": "Файл .design/STATE.md не найден. Выполните /gdd:start, чтобы инициализировать цикл.",
10
+ "error.no_config": "Файл .design/config.json не найден; используются значения по умолчанию.",
11
+ "error.stage_locked": "Этот этап заблокирован в текущем режиме цикла.",
12
+ "error.permission_denied": "Доступ запрещён: ваша роль не может выполнить это действие в этом разделе.",
13
+ "error.budget_cap": "Достигнут лимит бюджета. Увеличьте лимит в .design/budget.json или дождитесь следующей задачи.",
14
+ "error.connection_unavailable": "Подключение недоступно. Настройте его через /gdd:connections.",
15
+ "error.invalid_locale": "Неизвестная локаль. Доступные локали: en, ru, uk, de, fr, zh, ja.",
16
+ "error.merge_conflict": "В STATE.md конфликт слияния. Запустите conflict-resolver для согласования по разделам.",
17
+ "error.decision_locked": "Это решение заблокировано. Используйте /gdd:unlock-decision <id> --approver <кто>, чтобы открыть его повторно.",
18
+ "error.no_telemetry": "Телеметрия затрат пока отсутствует. Сначала выполните цикл.",
19
+ "prompt.brief_header": "Этап 1 из 5 - Brief: зафиксируйте задачу, аудиторию, ограничения и метрики.",
20
+ "prompt.explore_header": "Этап 2 из 5 - Explore: исследуйте поверхность дизайна и уточните намерение.",
21
+ "prompt.plan_header": "Этап 3 из 5 - Plan: разбейте работу на задачи.",
22
+ "prompt.design_header": "Этап 4 из 5 - Design: выполните план.",
23
+ "prompt.verify_header": "Этап 5 из 5 - Verify: оцените и проверьте по дизайн-системе.",
24
+ "status.complete": "Готово.",
25
+ "status.in_progress": "В процессе.",
26
+ "status.blocked": "Заблокировано."
27
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "_meta": { "locale": "uk", "coverage": "placeholder", "fallback": "en" },
3
+ "help.tagline": "Конвеєр якості дизайну для ШІ-агентів програмування.",
4
+ "status.complete": "Готово.",
5
+ "status.in_progress": "У процесі.",
6
+ "status.blocked": "Заблоковано."
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "_meta": { "locale": "zh", "coverage": "placeholder", "fallback": "en" },
3
+ "help.tagline": "面向 AI 编码代理的设计质量流水线。",
4
+ "status.complete": "完成。",
5
+ "status.in_progress": "进行中。",
6
+ "status.blocked": "已阻塞。"
7
+ }
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: gdd-locale
3
+ description: "Inspects or sets the GDD CLI locale for this project. With no argument, reports the resolved locale (config.locale > env LANG > en), the fallback chain, and per-locale coverage (which message tables are complete vs placeholder). With a <code> (en/ru/uk/de/fr/zh/ja), sets .design/config.json#locale after previewing the change. Localizes --help, common error messages, and skill prompt headers via scripts/lib/i18n/; missing keys fall back to English, so a partial locale never breaks the CLI. Use to switch GDD's own output language."
4
+ argument-hint: "[<code>]"
5
+ user-invocable: true
6
+ tools: Read, Write, Bash, Grep, Glob
7
+ ---
8
+
9
+ # /gdd:locale
10
+
11
+ Closes the English-only CLI gap: GDD's README is multilingual, but `--help`, errors, and skill prompt
12
+ headers spoke English until now. This skill inspects or sets the project's locale. Contract:
13
+ `../../reference/cli-localization.md`.
14
+
15
+ ## Invocation
16
+
17
+ | Command | Behavior |
18
+ |---|---|
19
+ | `/gdd:locale` | Report the resolved locale, the fallback chain, and per-locale coverage. |
20
+ | `/gdd:locale <code>` | Set `.design/config.json#locale` to `<code>` (en/ru/uk/de/fr/zh/ja), after preview. |
21
+
22
+ ## Steps
23
+
24
+ 1. **Resolve current.** Read `.design/config.json#locale` (if any) and the environment, then call the
25
+ resolver to report the active locale + chain:
26
+
27
+ ```bash
28
+ node -e '
29
+ const i = require("./scripts/lib/i18n/index.cjs");
30
+ let cfg = {}; try { cfg = JSON.parse(require("fs").readFileSync(".design/config.json","utf8")); } catch {}
31
+ const loc = i.resolveLocale({ env: process.env, configLocale: cfg.locale });
32
+ const cov = i.KNOWN_LOCALES.map((l) => `${l}:${(i.loadTable(l)._meta||{}).coverage||"?"}`).join(" ");
33
+ console.log(JSON.stringify({ resolved: loc, chain: i.fallbackChain(loc), coverage: cov }));
34
+ '
35
+ ```
36
+
37
+ 2. **No argument** → print the resolved locale, the fallback chain, and the coverage line (which
38
+ tables are `complete` vs `placeholder`). Stop.
39
+ 3. **`<code>` argument** → validate it is in `KNOWN_LOCALES` (en/ru/uk/de/fr/zh/ja). Unknown → print the
40
+ `error.invalid_locale` message + the known list, change nothing.
41
+ 4. **Preview + set.** Show `locale: <old> -> <code>`, then write `locale` into `.design/config.json`
42
+ (create the file if absent, preserving any existing keys). Confirm, and note that missing keys in a
43
+ placeholder locale fall back to English.
44
+
45
+ ## Output
46
+
47
+ End with:
48
+
49
+ ```
50
+ ## LOCALE COMPLETE
51
+ ```
@@ -39,7 +39,7 @@ Read once at start from `.design/config.json` (all optional; defaults in parens)
39
39
  Stop at the first tier that produces ≥ 1 command:
40
40
 
41
41
  1. **Authoritative config.** If `.design/config.json` has `quality_gate.commands` non-empty, use verbatim.
42
- 2. **Auto-detect from `package.json#scripts`** — match against allowlist: `lint`, `typecheck`, `tsc` (only if `typecheck` absent), `test`, `chromatic`, `test:visual`. Exclude by name: `test:e2e`, `test:integration` (if separate `test`), anything starting `dev:`, `build:`, `start:`. Run via `npm run <name>` unless `quality_gate.package_manager` overrides.
42
+ 2. **Auto-detect from `package.json#scripts`** — match against allowlist: `lint`, `typecheck`, `tsc` (only if `typecheck` absent), `test`, `chromatic`, `test:visual`, `lint:design` (Phase 41 — the `gdd-detect` deterministic anti-pattern gate, alongside `axe`/`pa11y`/`lighthouse`). Exclude by name: `test:e2e`, `test:integration` (if separate `test`), anything starting `dev:`, `build:`, `start:`. Run via `npm run <name>` unless `quality_gate.package_manager` overrides.
43
43
  3. **Skip with notice.** Emit `quality_gate_skipped` (Step 6) and write a `<run/>` with `status="skipped"`. Verify treats skipped as non-blocking.
44
44
 
45
45
  ## Step 2 — Parallel run