@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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +78 -0
- package/README.md +8 -0
- package/SKILL.md +1 -0
- package/agents/README.md +1 -0
- package/agents/design-auditor.md +5 -6
- package/bin/gdd-detect +20 -0
- package/package.json +4 -1
- package/reference/anti-patterns.md +26 -0
- package/reference/cli-localization.md +61 -0
- package/reference/config-schema.md +8 -0
- package/reference/registry.json +7 -0
- package/reference/schemas/config.schema.json +5 -0
- package/reference/schemas/generated.d.ts +4 -0
- package/scripts/lib/detect/cli.cjs +111 -0
- package/scripts/lib/detect/engine.cjs +83 -0
- package/scripts/lib/detect/rule-schema.json +31 -0
- package/scripts/lib/detect/rules/ban-01.cjs +33 -0
- package/scripts/lib/detect/rules/ban-02.cjs +33 -0
- package/scripts/lib/detect/rules/ban-03.cjs +33 -0
- package/scripts/lib/detect/rules/ban-05.cjs +33 -0
- package/scripts/lib/detect/rules/ban-06.cjs +33 -0
- package/scripts/lib/detect/rules/ban-07.cjs +33 -0
- package/scripts/lib/detect/rules/ban-08.cjs +33 -0
- package/scripts/lib/detect/rules/ban-09.cjs +33 -0
- package/scripts/lib/detect/rules/ban-11.cjs +33 -0
- package/scripts/lib/detect/rules/ban-12.cjs +33 -0
- package/scripts/lib/detect/rules/ban-13.cjs +33 -0
- package/scripts/lib/detect/rules/index.cjs +21 -0
- package/scripts/lib/i18n/index.cjs +95 -0
- package/scripts/lib/i18n/messages/de.json +7 -0
- package/scripts/lib/i18n/messages/en.json +27 -0
- package/scripts/lib/i18n/messages/fr.json +7 -0
- package/scripts/lib/i18n/messages/ja.json +7 -0
- package/scripts/lib/i18n/messages/ru.json +27 -0
- package/scripts/lib/i18n/messages/uk.json +7 -0
- package/scripts/lib/i18n/messages/zh.json +7 -0
- package/skills/locale/SKILL.md +51 -0
- 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,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
|
|
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
|