Skip to content

Commit 3a0312d

Browse files
authored
Merge pull request #26 from baskduf/fix/release-blocking-findings
fix: resolve release-blocking Artic findings
2 parents f902a0c + 91e3aca commit 3a0312d

18 files changed

Lines changed: 627 additions & 81 deletions

README.ja.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ Artic が呼び出されると、エージェントは次を行います:
117117

118118
1. ホームページ/デザイン依頼が曖昧な場合、実装前に立ち止まります。
119119
2. `@artic init` で product、audience、goal、vibe、constraints、references を収集します。
120-
3. Search multiple professional/OSS design resources instead of relying on one style.
121-
4. Extract reusable rules: color roles, type hierarchy, spacing rhythm, components, motion, accessibility.
122-
5. Resolve conflicts between references based on the user's project goal.
120+
3. 1つのスタイルに頼らず、複数のプロフェッショナル/OSSデザインリソースを検索します。
121+
4. 色の役割、タイプ階層、余白リズム、コンポーネント、モーション、アクセシビリティなど、再利用可能なルールを抽出します。
122+
5. ユーザーのプロジェクト目標に基づいて、レファレンス間の衝突を解決します。
123123
6. `@artic start` で public agent workflow が `.artic/strategy.json` を作成し、`docs/artic-strategy.md` を保存してから compiler を実行し、`DESIGN.md` と補助文書を生成します。
124124
7. `@artic show` で strategy artifacts に基づく安全な静的 preview `.artic/show/index.html` をレンダリングし、アプリのソースファイルは変更しません。
125125
8. `@artic review` で実装を `.artic/strategy.json``docs/artic-strategy.md``DESIGN.md` と比較し、生成されたデザイン文書を検証します。
@@ -128,10 +128,10 @@ Artic が呼び出されると、エージェントは次を行います:
128128

129129
使う場面:
130130

131-
- Homepages, landing pages, product pages, and website redesigns.
132-
- Projects with weak or missing design docs.
133-
- AI-native design documentation before coding.
134-
- Reference-driven design direction without exact brand copying.
131+
- ホームページ、ランディングページ、プロダクトページ、Webサイトリデザイン。
132+
- デザインドキュメントが弱い、または存在しないプロジェクト。
133+
- 実装前に作るAI-nativeなデザインドキュメント。
134+
- ブランドを正確にコピーしない、レファレンス駆動のデザインディレクション。
135135

136136
使わない場面:
137137

@@ -157,7 +157,7 @@ Artic が呼び出されると、エージェントは次を行います:
157157

158158
## Output Policy
159159

160-
Artic writes durable files instead of dumping long design prose into chat:
160+
Artic は長いデザイン説明をチャットに流すのではなく、永続的なファイルを書き出します:
161161

162162
```text
163163
.artic/init-session.json # draft interview state from @artic init
@@ -194,7 +194,7 @@ python3 -m pip install pytest pyyaml
194194
python3 -m pytest -q
195195
```
196196

197-
CI validates Python scripts, JSON manifests, README translation structure, skill-copy sync, smoke scaffolding, warning-free DESIGN.md lint, and marketplace plugin layout.
197+
CI Python スクリプト、JSON マニフェスト、README 翻訳構造、skill copy 同期、smoke scaffold、警告なしの DESIGN.md lintmarketplace plugin layout を検証します。
198198

199199
Distribution note: the wheel is metadata-only; marketplace packages, release tarballs, and sdists carry the skill/plugin payload.
200200

README.zh-CN.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ Artic 被调用后,Agent 会:
117117

118118
1. 当首页/设计请求很模糊时,先暂停而不是直接实现。
119119
2. 运行 `@artic init` 收集 product、audience、goal、vibe、constraints 和 references。
120-
3. Search multiple professional/OSS design resources instead of relying on one style.
121-
4. Extract reusable rules: color roles, type hierarchy, spacing rhythm, components, motion, accessibility.
122-
5. Resolve conflicts between references based on the user's project goal.
120+
3. 搜索多个专业/OSS 设计资源,而不是依赖单一风格。
121+
4. 提取可复用规则:颜色角色、字体层级、间距节奏、组件、动效与可访问性。
122+
5. 根据用户的项目目标解决不同参考之间的冲突。
123123
6. 运行 `@artic start`,让 public agent workflow 编写 `.artic/strategy.json`、保存 `docs/artic-strategy.md`,再运行 compiler 生成 `DESIGN.md` 和辅助文档。
124124
7. 运行 `@artic show`,基于 strategy artifacts 渲染 `.artic/show/index.html`,作为不会修改应用源码的安全静态 preview。
125125
8. 运行 `@artic review`,把实现与 `.artic/strategy.json``docs/artic-strategy.md``DESIGN.md` 对比,并验证生成的设计文档。
@@ -128,10 +128,10 @@ Artic 被调用后,Agent 会:
128128

129129
适合用于:
130130

131-
- Homepages, landing pages, product pages, and website redesigns.
132-
- Projects with weak or missing design docs.
133-
- AI-native design documentation before coding.
134-
- Reference-driven design direction without exact brand copying.
131+
- 主页、落地页、产品页和网站改版。
132+
- 设计文档薄弱或缺失的项目。
133+
- 编码前的 AI-native 设计文档。
134+
- 不精确复制品牌的参考驱动设计方向。
135135

136136
不适合用于:
137137

@@ -157,7 +157,7 @@ Artic 被调用后,Agent 会:
157157

158158
## Output Policy
159159

160-
Artic writes durable files instead of dumping long design prose into chat:
160+
Artic 会写入持久文件,而不是把大段设计说明直接倾倒到聊天里:
161161

162162
```text
163163
.artic/init-session.json # draft interview state from @artic init
@@ -194,7 +194,7 @@ python3 -m pip install pytest pyyaml
194194
python3 -m pytest -q
195195
```
196196

197-
CI validates Python scripts, JSON manifests, README translation structure, skill-copy sync, smoke scaffolding, warning-free DESIGN.md lint, and marketplace plugin layout.
197+
CI 会验证 Python 脚本、JSON 清单、README 翻译结构、skill copy 同步、smoke scaffold、无警告 DESIGN.md lint,以及 marketplace plugin layout
198198

199199
Distribution note: the wheel is metadata-only; marketplace packages, release tarballs, and sdists carry the skill/plugin payload.
200200

README.zh-TW.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,18 @@ Agent 會在內部處理使用者訪談、把 brief 正規化為搜索 facets、
5151
也可以用自然語言請求:
5252

5353
```text
54-
在建置这个首页之前,用 Artic 创建 AI-native 设计文件
54+
在建置這個首頁之前,用 Artic 建立 AI-native 設計文件
5555
```
5656

5757
### Codex marketplace
5858

59-
从目前預設分支新增 marketplace:
59+
從目前預設分支新增 marketplace:
6060

6161
```bash
6262
codex plugin marketplace add baskduf/artic
6363
```
6464

65-
需要稳定安裝时固定到发布标签
65+
需要穩定安裝時固定到發布標籤
6666

6767
```bash
6868
codex plugin marketplace add baskduf/artic@v0.3.0
@@ -117,9 +117,9 @@ Artic 被呼叫後,Agent 會:
117117

118118
1. 當首頁/設計請求很模糊時,先暫停而不是直接實作。
119119
2. 執行 `@artic init` 收集 product、audience、goal、vibe、constraints 和 references。
120-
3. Search multiple professional/OSS design resources instead of relying on one style.
121-
4. Extract reusable rules: color roles, type hierarchy, spacing rhythm, components, motion, accessibility.
122-
5. Resolve conflicts between references based on the user's project goal.
120+
3. 搜尋多個專業/OSS 設計資源,而不是依賴單一風格。
121+
4. 萃取可重用規則:色彩角色、字體層級、間距節奏、元件、動效與可存取性。
122+
5. 依據使用者的專案目標解決不同參考之間的衝突。
123123
6. 執行 `@artic start`,讓 public agent workflow 編寫 `.artic/strategy.json`、儲存 `docs/artic-strategy.md`,再執行 compiler 生成 `DESIGN.md` 和輔助文件。
124124
7. 執行 `@artic show`,基於 strategy artifacts 渲染 `.artic/show/index.html`,作為不會修改應用程式原始碼的安全靜態 preview。
125125
8. 執行 `@artic review`,把實作與 `.artic/strategy.json``docs/artic-strategy.md``DESIGN.md` 對比,並驗證生成的設計文件。
@@ -128,10 +128,10 @@ Artic 被呼叫後,Agent 會:
128128

129129
適合用於:
130130

131-
- Homepages, landing pages, product pages, and website redesigns.
132-
- Projects with weak or missing design docs.
133-
- AI-native design documentation before coding.
134-
- Reference-driven design direction without exact brand copying.
131+
- 首頁、登陸頁、產品頁和網站改版。
132+
- 設計文件薄弱或缺失的專案。
133+
- 編碼前的 AI-native 設計文件。
134+
- 不精確複製品牌的參考驅動設計方向。
135135

136136
不適合用於:
137137

@@ -157,7 +157,7 @@ Artic 被呼叫後,Agent 會:
157157

158158
## Output Policy
159159

160-
Artic writes durable files instead of dumping long design prose into chat:
160+
Artic 會寫入持久文件,而不是把大段設計說明直接倒進聊天裡:
161161

162162
```text
163163
.artic/init-session.json # draft interview state from @artic init
@@ -194,7 +194,7 @@ python3 -m pip install pytest pyyaml
194194
python3 -m pytest -q
195195
```
196196

197-
CI validates Python scripts, JSON manifests, README translation structure, skill-copy sync, smoke scaffolding, warning-free DESIGN.md lint, and marketplace plugin layout.
197+
CI 會驗證 Python 腳本、JSON 清單、README 翻譯結構、skill copy 同步、smoke scaffold、無警告 DESIGN.md lint,以及 marketplace plugin layout
198198

199199
Distribution note: the wheel is metadata-only; marketplace packages, release tarballs, and sdists carry the skill/plugin payload.
200200

plugins/claude-artic/skills/artic/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,8 @@ Use presets only as search/synthesis starting points:
286286
## Validation
287287

288288
```bash
289-
python3 ~/.hermes/skills/creative/artic/scripts/validate_artic_outputs.py --root <project-root>
290-
python3 ~/.hermes/skills/creative/artic/scripts/search_reference_catalog.py --query "ai product developer saas premium" --limit 3
289+
python3 <artic-skill>/scripts/validate_artic_outputs.py --root <project-root>
290+
python3 <artic-skill>/scripts/search_reference_catalog.py --query "ai product developer saas premium" --limit 3
291291
```
292292

293293
Validation, compilation, and rendering scripts enforce and materialize the contract. They are not a design judgment source; `@artic start` must provide that judgment through `.artic/strategy.json`.

plugins/claude-artic/skills/artic/scripts/artic_init_session.py

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,30 @@
6767
}
6868

6969
_STYLE_HINT_RE = re.compile(r"토스|신뢰|고급|깔끔|스타트업|모바일|saas|premium|trust|clean|mobile|startup", re.IGNORECASE)
70+
_LABELED_ANSWER_RE = re.compile(
71+
r"(?:^|[.;\n]\s*)(project|product|service|audience|target user|target users|goal|conversion goal|vibe|impression|style|stack|tech stack|references?|avoid|accessibility|asset policy)\s*:\s*(.*?)(?=(?:[.;\n]\s*)(?:project|product|service|audience|target user|target users|goal|conversion goal|vibe|impression|style|stack|tech stack|references?|avoid|accessibility|asset policy)\s*:|$)",
72+
re.IGNORECASE | re.DOTALL,
73+
)
74+
_LABELED_FIELD_MAP = {
75+
"project": "project",
76+
"product": "project",
77+
"service": "project",
78+
"audience": "audience",
79+
"target user": "audience",
80+
"target users": "audience",
81+
"goal": "goal",
82+
"conversion goal": "goal",
83+
"vibe": "vibe",
84+
"impression": "vibe",
85+
"style": "vibe",
86+
"stack": "stack",
87+
"tech stack": "stack",
88+
"reference": "references",
89+
"references": "references",
90+
"avoid": "avoid",
91+
"accessibility": "accessibility",
92+
"asset policy": "asset_policy",
93+
}
7094

7195

7296
def write(path: Path, content: str) -> None:
@@ -97,16 +121,22 @@ def write_session(root: Path, session: dict[str, Any]) -> None:
97121

98122
def extract_answers_from_text(text: str) -> dict[str, str]:
99123
answers: dict[str, str] = {}
124+
for match in _LABELED_ANSWER_RE.finditer(text):
125+
raw_key = match.group(1).lower().strip()
126+
field = _LABELED_FIELD_MAP.get(raw_key)
127+
value = match.group(2).strip(" .;\n\t")
128+
if field and value:
129+
answers[field] = value
100130
lowered = text.lower()
101131
if "ai 회의록" in lowered or "회의록" in text:
102-
answers["project"] = "AI 회의록 서비스"
132+
answers.setdefault("project", "AI 회의록 서비스")
103133
if "데모" in text:
104-
answers["goal"] = "데모 요청"
134+
answers.setdefault("goal", "데모 요청")
105135
elif "가입" in text:
106-
answers["goal"] = "가입"
136+
answers.setdefault("goal", "가입")
107137
elif "문의" in text:
108-
answers["goal"] = "문의"
109-
if _STYLE_HINT_RE.search(text):
138+
answers.setdefault("goal", "문의")
139+
if _STYLE_HINT_RE.search(text) and "vibe" not in answers:
110140
answers["vibe"] = text.strip()
111141
return answers
112142

@@ -206,7 +236,8 @@ def render_ready_summary(session: dict[str, Any]) -> str:
206236
f"- 목표: {answers.get('goal', '')}",
207237
f"- 무드: {answers.get('vibe', '')}",
208238
"",
209-
"더 다듬고 싶으면 레퍼런스, 피해야 할 스타일, 브랜드 제약을 추가로 알려주세요.",
239+
"더 다듬고 싶으면 레퍼런스, 피해야 할 스타일, 브랜드/에셋 제약을 추가로 알려주세요.",
240+
"에셋 사용을 명시적으로 허용하지 않으면 외부 소스는 원칙 참고로만 사용합니다.",
210241
"문서 생성을 시작하려면 `@artic start`를 실행하세요.",
211242
]
212243
else:
@@ -219,7 +250,8 @@ def render_ready_summary(session: dict[str, Any]) -> str:
219250
f"- Goal: {answers.get('goal', '')}",
220251
f"- Vibe: {answers.get('vibe', '')}",
221252
"",
222-
"Add references, avoided styles, or brand constraints if you want to refine the brief.",
253+
"Add references, avoided styles, brand constraints, or asset policy if you want to refine the brief.",
254+
"If you do not explicitly allow asset usage, external sources stay reference-principles only.",
223255
"To generate Artic design docs, run `@artic start`.",
224256
]
225257
return "\n".join(lines)

plugins/claude-artic/skills/artic/scripts/artic_show.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"docs/homepage-design-prompt.md",
1616
".artic/brief.json",
1717
".artic/references.json",
18+
".artic/strategy.json",
1819
]
1920
POLICY_FALLBACK = "Reference policy: extract reusable principles only; do not copy logos, trademarks, proprietary illustrations, or exact layouts."
2021
POLICY_BY_LOCALE = {

0 commit comments

Comments
 (0)