Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"displayName": "Artic"
},
"description": "Reference-driven AI-native design docs for homepage generation.",
"version": "0.5.0",
"version": "0.6.0",
"author": "baskduf",
"plugins": [
{
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "artic",
"display_name": "Artic",
"description": "Reference-driven AI-native design docs for homepage generation.",
"version": "0.5.0",
"version": "0.6.0",
"author": "baskduf",
"plugins": [
{
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 0.6.0 - 2026-06-20

### Added
- Added source-role metadata across the Artic catalog so references declare whether they are visual, system, implementation, behavior, QA, asset, legal, or copy guidance.
- Preserved source-role metadata in init reference outputs and source plans for downstream agent strategy authoring.

### Changed
- Gated role-grounded source selection with source-role eligibility and explicit-context metadata so implementation, asset, legal, and system references do not leak into unrelated visual guidance.
- Reduced default source over-selection so Polaris, shadcn/ui, Tailwind, and similar implementation sources are selected only when the project context supports their role.

## 0.5.0 - 2026-06-20

### Removed
Expand Down
2 changes: 1 addition & 1 deletion README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ codex plugin marketplace add baskduf/artic
安定したインストールが必要な場合はリリースタグに固定します:

```bash
codex plugin marketplace add baskduf/artic@v0.5.0
codex plugin marketplace add baskduf/artic@v0.6.0
```

プラグインブラウザから `codex-artic` をインストールします:
Expand Down
2 changes: 1 addition & 1 deletion README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ codex plugin marketplace add baskduf/artic
안정적인 설치가 필요하면 릴리즈 태그로 고정:

```bash
codex plugin marketplace add baskduf/artic@v0.5.0
codex plugin marketplace add baskduf/artic@v0.6.0
```

플러그인 브라우저에서 `codex-artic` 설치:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ codex plugin marketplace add baskduf/artic
Pin a released version when you want a stable install:

```bash
codex plugin marketplace add baskduf/artic@v0.5.0
codex plugin marketplace add baskduf/artic@v0.6.0
```

Install `codex-artic` from the plugin browser:
Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ codex plugin marketplace add baskduf/artic
需要稳定安装时固定到发布标签:

```bash
codex plugin marketplace add baskduf/artic@v0.5.0
codex plugin marketplace add baskduf/artic@v0.6.0
```

在插件浏览器中安装 `codex-artic`:
Expand Down
2 changes: 1 addition & 1 deletion README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ codex plugin marketplace add baskduf/artic
需要穩定安裝時固定到發布標籤:

```bash
codex plugin marketplace add baskduf/artic@v0.5.0
codex plugin marketplace add baskduf/artic@v0.6.0
```

在外掛瀏覽器中安裝 `codex-artic`:
Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-artic/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "claude-artic",
"version": "0.5.0",
"version": "0.6.0",
"description": "Artic design onboarding skill for Claude Code.",
"skills": [
{
Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-artic/skills/artic/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: artic
description: "Use when creating or improving a homepage/website and design rules are missing or weak. Artic is an agent design-direction protocol: @artic init interviews the user, @artic start authors strategy artifacts, then the compiler produces AI-native DESIGN.md docs from reusable reference principles."
version: 0.5.0
version: 0.6.0
author: Hermes Agent
license: MIT
metadata:
Expand Down
4 changes: 2 additions & 2 deletions plugins/claude-artic/skills/artic/scripts/artic_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
]

brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": normalized_project["name"],
"type": "homepage",
Expand Down Expand Up @@ -345,7 +345,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
"source_plan": source_plan,
"synthesis": "Use selected sources as compatible patterns; localize prose according to the brief language contract while preserving source names and protected terms.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}

write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-artic/skills/artic/scripts/artic_start.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ def update_state(root: Path, brief: dict[str, Any]) -> None:
state = loaded
except json.JSONDecodeError:
state = {}
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.5.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.6.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
write(state_path, json.dumps(state, indent=2, ensure_ascii=False) + "\n")


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
"forbidden_copy_elements": ["logos", "trademarks", "proprietary illustrations", "exact layouts", "source copywriting"],
}
brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": project_name,
"type": "homepage",
Expand Down Expand Up @@ -139,7 +139,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
],
"synthesis": "Clean SaaS hierarchy with token discipline and mobile-first accessibility.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "strategy.json", json.dumps(strategy, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex-artic/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codex-artic",
"version": "0.5.0",
"version": "0.6.0",
"description": "Artic design onboarding skill for Codex.",
"skills": [
{
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex-artic/skills/artic/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: artic
description: "Use when creating or improving a homepage/website and design rules are missing or weak. Artic is an agent design-direction protocol: @artic init interviews the user, @artic start authors strategy artifacts, then the compiler produces AI-native DESIGN.md docs from reusable reference principles."
version: 0.5.0
version: 0.6.0
author: Hermes Agent
license: MIT
metadata:
Expand Down
4 changes: 2 additions & 2 deletions plugins/codex-artic/skills/artic/scripts/artic_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
]

brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": normalized_project["name"],
"type": "homepage",
Expand Down Expand Up @@ -345,7 +345,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
"source_plan": source_plan,
"synthesis": "Use selected sources as compatible patterns; localize prose according to the brief language contract while preserving source names and protected terms.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}

write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex-artic/skills/artic/scripts/artic_start.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ def update_state(root: Path, brief: dict[str, Any]) -> None:
state = loaded
except json.JSONDecodeError:
state = {}
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.5.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.6.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
write(state_path, json.dumps(state, indent=2, ensure_ascii=False) + "\n")


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
"forbidden_copy_elements": ["logos", "trademarks", "proprietary illustrations", "exact layouts", "source copywriting"],
}
brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": project_name,
"type": "homepage",
Expand Down Expand Up @@ -139,7 +139,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
],
"synthesis": "Clean SaaS hierarchy with token discipline and mobile-first accessibility.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "strategy.json", json.dumps(strategy, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "artic"
version = "0.5.0"
version = "0.6.0"
description = "Reference-driven AI-native design docs for homepage generation"
readme = "README.md"
requires-python = ">=3.9"
Expand Down
2 changes: 1 addition & 1 deletion skills/artic/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: artic
description: "Use when creating or improving a homepage/website and design rules are missing or weak. Artic is an agent design-direction protocol: @artic init interviews the user, @artic start authors strategy artifacts, then the compiler produces AI-native DESIGN.md docs from reusable reference principles."
version: 0.5.0
version: 0.6.0
author: Hermes Agent
license: MIT
metadata:
Expand Down
4 changes: 2 additions & 2 deletions skills/artic/scripts/artic_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
]

brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": normalized_project["name"],
"type": "homepage",
Expand Down Expand Up @@ -345,7 +345,7 @@ def create_init_outputs(root: Path, args: argparse.Namespace) -> dict:
"source_plan": source_plan,
"synthesis": "Use selected sources as compatible patterns; localize prose according to the brief language contract while preserving source names and protected terms.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "initialized", "language": lang, "intent_path": ".artic/intent.json"}

write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion skills/artic/scripts/artic_start.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ def update_state(root: Path, brief: dict[str, Any]) -> None:
state = loaded
except json.JSONDecodeError:
state = {}
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.5.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
state.update({"artic_version": str(brief.get("artic_version") or state.get("artic_version") or "0.6.0"), "last_generated_at": datetime.now(timezone.utc).isoformat(), "status": "generated", "language": brief_language(brief), "strategy_path": ".artic/strategy.json"})
write(state_path, json.dumps(state, indent=2, ensure_ascii=False) + "\n")


Expand Down
4 changes: 2 additions & 2 deletions skills/artic/scripts/scaffold_artic_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
"forbidden_copy_elements": ["logos", "trademarks", "proprietary illustrations", "exact layouts", "source copywriting"],
}
brief = {
"artic_version": "0.5.0",
"artic_version": "0.6.0",
"project": {
"name": project_name,
"type": "homepage",
Expand Down Expand Up @@ -139,7 +139,7 @@ def scaffold(root: Path, project_name: str, locale: str = "en-US") -> None:
],
"synthesis": "Clean SaaS hierarchy with token discipline and mobile-first accessibility.",
}
state = {"artic_version": "0.5.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
state = {"artic_version": "0.6.0", "last_generated_at": now, "status": "scaffolded", "language": language, "intent_path": ".artic/intent.json", "strategy_path": ".artic/strategy.json"}
write(root / ".artic" / "intent.json", json.dumps(intent, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "strategy.json", json.dumps(strategy, indent=2, ensure_ascii=False) + "\n")
write(root / ".artic" / "brief.json", json.dumps(brief, indent=2, ensure_ascii=False) + "\n")
Expand Down
2 changes: 1 addition & 1 deletion tests/test_artic_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ def test_readmes_document_version_and_update_commands():


def test_active_files_do_not_keep_previous_release_version_literals():
previous_literals = ("0.4.1", "v0.4.1")
previous_literals = ("0.5.0", "v0.5.0")
checked_roots = [
ROOT / "README.md",
ROOT / "README.ko.md",
Expand Down