Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
5b7bbb5
fix: resolve issue 137 and align unity project updates
Apr 5, 2026
b98a8a7
Merge pull request #158 from akiojin/bugfix/issue-137
akiojin Apr 5, 2026
3d45130
chore(deps): add cargo ecosystem to dependabot config
Apr 5, 2026
37e2e62
chore(deps): bump pnpm/action-setup from 4 to 5 (#140)
dependabot[bot] Apr 5, 2026
414cd9e
chore(deps): bump the npm_and_yarn group across 1 directory with 5 up…
dependabot[bot] Apr 5, 2026
f67d50e
chore(deps): bump codecov/codecov-action from 5 to 6 (#143)
dependabot[bot] Apr 5, 2026
d3f2b44
chore(deps): bump rustls-webpki in the cargo group across 1 directory…
dependabot[bot] Apr 5, 2026
233df52
chore(deps): bump undici in the npm_and_yarn group across 1 directory…
dependabot[bot] Apr 5, 2026
ba98a29
chore(deps): bump the npm_and_yarn group with 2 updates
dependabot[bot] Apr 6, 2026
fc2b207
Merge pull request #159 from akiojin/dependabot/npm_and_yarn/develop/…
akiojin Apr 7, 2026
f601647
feat(skills): introduce Skill Contract v1, unity-cli skills lint, dua…
akiojin Apr 8, 2026
a6eae4a
feat(skills): add unity development loop skill
akiojin Apr 8, 2026
2273634
test(skill-routing): tighten runner rules
akiojin Apr 8, 2026
02f12a2
Merge pull request #163 from akiojin/feature/issue-160
akiojin Apr 9, 2026
a8456ab
Merge remote-tracking branch 'origin/develop' into feat/skill-contrac…
akiojin Apr 10, 2026
9e080d2
test(skills): raise coverage and normalize workflow skill
akiojin Apr 10, 2026
be89b6c
style: format skill coverage tests
akiojin Apr 10, 2026
9cb58e7
Merge pull request #161 from akiojin/feat/skill-contract-v1-160
akiojin Apr 10, 2026
5b11aef
chore(release): v0.10.0
akiojin Apr 10, 2026
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
22 changes: 22 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "unity-cli-marketplace",
"interface": {
"displayName": "Unity CLI Marketplace",
"shortDescription": "Workflow-oriented Codex skills for Unity Editor automation",
"category": "Productivity"
},
"plugins": [
{
"name": "unity-cli",
"source": {
"source": "local",
"path": "../../.codex-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "NONE"
},
"category": "Productivity"
}
]
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions .agents/skills/unity-development-loop
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "unity-cli",
"version": "0.1.0",
"version": "0.2.0",
"description": "Claude Code skills for workflow-oriented unity-cli automation and Unity CLI Bridge operations.",
"owner": {
"name": "akiojin",
Expand All @@ -10,7 +10,7 @@
{
"name": "unity-cli",
"description": "Claude Code plugin for workflow-oriented Rust-based unity-cli automation.",
"version": "0.1.0",
"version": "0.2.0",
"source": "./.claude-plugin/plugins/unity-cli",
"category": "development"
}
Expand Down
141 changes: 141 additions & 0 deletions .claude-plugin/plugins/unity-cli/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Contributing to the unity-cli skills plugin

This plugin ships workflow-oriented skills for the Rust `unity-cli` to both
Claude Code and Codex CLI. All skills under
`.claude-plugin/plugins/unity-cli/skills/unity-*` follow **Skill Contract v1**
(SPEC: [#160](https://github.com/akiojin/unity-cli/issues/160)). The contract
is enforced by `unity-cli skills lint` and gated in CI.

## Quick start

```bash
# 1. Create a new skill directory
mkdir -p .claude-plugin/plugins/unity-cli/skills/unity-<domain>-<action>/references

# 2. Copy the runtime checklist (required for every skill)
cp .claude-plugin/plugins/unity-cli/skills/unity-cli-usage/references/runtime-checklist.md \
.claude-plugin/plugins/unity-cli/skills/unity-<domain>-<action>/references/

# 3. Author SKILL.md following the template below

# 4. Refresh the symlinks for Claude Code and Codex
ln -sf "../../.claude-plugin/plugins/unity-cli/skills/unity-<domain>-<action>" \
".claude/skills/unity-<domain>-<action>"
ln -sf "../../.claude-plugin/plugins/unity-cli/skills/unity-<domain>-<action>" \
".agents/skills/unity-<domain>-<action>"

# 5. Validate
cargo run -- skills lint --severity error
```

## Naming

- Skill name: `unity-<domain>-<action>` (kebab-case, lowercase, ≤ 64 chars).
- Directory name and frontmatter `name` must match.
- Reserved words `claude` and `anthropic` are forbidden.

## Required frontmatter

```yaml
---
name: unity-<domain>-<action>
description: <verb> <object> with unity-cli. Use when <user phrasing>. Do not use for <other case>; use `<sibling>` instead.
allowed-tools: Bash(unity-cli:*), Read, Grep, Glob
metadata:
author: <name>
version: 0.3.0 # SemVer; bump on contract changes
category: scenes # foundation | scenes | assets | code | editor | input | testing | prefabs | ui
triggers: # singular, lowercase, source of truth for R08/R22
- scene
- bootstrap
siblings: # cross-listed bidirectionally with R12
- unity-gameobject-edit
- unity-prefab-workflow
---
```

Optional fields:

- `user-invocable: false` — only allowed on `category: foundation` skills.
- `metadata` may include other custom keys; the linter ignores them.

## Description writing rules

Anthropic best practices apply (see `docs/skills.md` for the full mapping):

| Rule | What | Why |
|---|---|---|
| Hard limit | ≤ 1024 characters | Anthropic platform limit |
| Soft limit | At least one `metadata.triggers` entry inside the first 250 characters | Listing truncation; front-load the main trigger |
| Person | Third-person / imperative (`Manage`, `Drive`, `Configure`) | First and second-person patterns confuse model selection |
| Use when / Do not use | Both must appear | Disambiguates against siblings |
| Sibling mention | At least one `metadata.siblings` entry must appear in the description text | Anchors the boundary so users see the alternative |

Bad description:

```yaml
description: I can help you manage Unity prefabs. # ❌ first-person, no Use when, no sibling
```

Good description:

```yaml
description: Manage Unity prefab assets with unity-cli. Use when the user asks to create a prefab from a scene object, open a prefab in edit mode, or instantiate a prefab. Do not use for general scene editing; use `unity-gameobject-edit` or `unity-scene-create` instead.
```

## SKILL.md body structure

The body must contain these `## H2` headings in this order:

1. `## Use When`
2. `## Do Not Use When`
3. `## Preferred Flow`
4. `## Examples`
5. `## References`

Constraints:

- ≤ 500 lines
- `## References` must contain at least one markdown link
- Reference files must be 1 level deep (no nested links between references)
- Reference files > 100 lines must include `## Table of Contents` in the first 15 lines
- No time-sensitive language (`as of`, `until next release`, `currently`, `現時点では`)

## Required references

Every skill must include:

- `references/runtime-checklist.md` — connection / instance / install-mode prerequisites. Copy from `unity-cli-usage` and customize only when necessary.

Skill-specific references go in the same directory as siblings.

## Allowed tools

```yaml
allowed-tools: Bash(unity-cli:*), Read, Grep, Glob
```

Only `unity-csharp-edit` may also include `Edit, Write`. The bare `Bash` token
is rejected; use the prefix-bound `Bash(unity-cli:*)`.

## Validating before commit

```bash
cargo run -- skills lint --severity error
```

The linter applies all 22 rules (R01..R22) and exits non-zero on any
violation. CI runs the same command — see `.github/workflows/ci.yml` and
`.github/workflows/release.yml`.

## Pull request checklist

- [ ] `cargo run -- skills lint --severity error` exits 0
- [ ] `cargo test --all-targets` is green
- [ ] `cargo fmt --all -- --check`
- [ ] `cargo clippy --all-targets -- -D warnings`
- [ ] `.claude/skills/<name>` symlink updated
- [ ] `.agents/skills/<name>` symlink updated
- [ ] `metadata.version` bumped if behavior or contract changed
- [ ] `metadata.siblings` cross-listed bidirectionally
- [ ] Linked Issue references the contract SPEC ([#160](https://github.com/akiojin/unity-cli/issues/160)) when modifying skill structure
11 changes: 8 additions & 3 deletions .claude-plugin/plugins/unity-cli/plugin.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
{
"name": "unity-cli",
"version": "0.1.0",
"description": "Claude Code plugin providing workflow-oriented skills for Rust-based unity-cli automation.",
"version": "0.2.0",
"description": "Workflow-oriented Claude Code skills for Unity Editor automation via the Rust unity-cli.",
"author": {
"name": "akiojin",
"url": "https://github.com/akiojin"
}
},
"homepage": "https://github.com/akiojin/unity-cli",
"repository": "https://github.com/akiojin/unity-cli",
"license": "MIT",
"keywords": ["unity", "automation", "skills", "claude-code"],
"skills": "./skills/"
}
47 changes: 21 additions & 26 deletions .claude-plugin/plugins/unity-cli/skills/unity-addressables/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
---
name: unity-addressables
description: Manage Unity Addressables groups and content with unity-cli. Use when the user asks to list or create groups, add or remove entries, build or clean Addressables content, or analyze and fix Addressables issues before a build. Do not use for generic asset import settings or material editing; use asset management for those tasks.
allowed-tools: Bash, Read, Grep, Glob
description: Manage Unity Addressables groups and content with unity-cli. Use when the user asks to list or create a group, add or remove an entry, build or clean addressables content, or analyze and fix addressables issues before a build. Do not use for generic import settings or material edits; use `unity-asset-management` instead.
allowed-tools: Bash(unity-cli:*), Read, Grep, Glob
metadata:
author: akiojin
version: 0.2.0
version: 0.3.0
category: assets
triggers:
- addressables
- group
- entry
- bundle
- content-build
siblings:
- unity-asset-management
---

# Addressables Operations
# Addressables

Manage Addressable Asset groups, build content, and analyze bundles.
Read `references/addressables-build-loop.md` when you need a safer order for group changes, analysis, and clean builds.
Manage Addressable asset groups, build content, and analyse bundles. This skill is the content-delivery sibling of `unity-asset-management`.

## Use When

Expand All @@ -21,43 +28,31 @@ Read `references/addressables-build-loop.md` when you need a safer order for gro

## Do Not Use When

- The task is about general asset import settings or dependency analysis outside Addressables.
- The request is about scene object setup rather than content delivery.
- The task is about general asset import settings or dependency analysis outside Addressables; use `unity-asset-management`.
- The request is about scene object setup rather than content delivery; use `unity-gameobject-edit` or `unity-scene-create`.

## Recommended Flow
## Preferred Flow

1. Inspect existing groups before creating or moving entries.
2. Apply group or entry changes with `addressables_manage`.
3. Run `addressables_analyze` before a build, and use `fix_issues` only when the reported changes are acceptable.
4. Build with `addressables_build`, using `clean_build` when structure changed substantially.

## Commands

```bash
# Group management
unity-cli raw addressables_manage --json '{"action":"list_groups"}'
unity-cli raw addressables_manage --json '{"action":"create_group","groupName":"Characters"}'
unity-cli raw addressables_manage --json '{"action":"add_entry","groupName":"Characters","assetPath":"Assets/Prefabs/Hero.prefab","address":"hero"}'
unity-cli raw addressables_manage --json '{"action":"remove_entry","address":"hero"}'

# Build
unity-cli raw addressables_build --json '{"action":"build"}'
unity-cli raw addressables_build --json '{"action":"clean_build"}'

# Analysis
unity-cli raw addressables_analyze --json '{"action":"analyze"}'
unity-cli raw addressables_analyze --json '{"action":"fix_issues"}'
unity-cli raw addressables_build --json '{"action":"clean_build"}'
```

## Examples

- "Create an Addressables group for character prefabs and add the hero prefab."
- "Analyze Addressables issues and then build content."
- "Run a clean Addressables build after reorganizing groups."
- "Run a clean Addressables build after reorganising groups."

## Common Issues
## References

- The wrong group or address is targeted: list groups first and verify the entry path.
- Builds fail after structural changes: run `analyze` and prefer `clean_build`.
- `fix_issues` can be broad: inspect the analysis result before applying it in a risky project.
- Generic asset problems should go through `unity-asset-management`, not this skill.
- [runtime-checklist.md](references/runtime-checklist.md): connection and instance prerequisites.
- [addressables-build-loop.md](references/addressables-build-loop.md): safer order for group changes, analysis, and clean builds.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Runtime Checklist

## Binary Selection

- Prefer an installed `unity-cli` binary when it exists on `PATH`.
- If the repo is the current workspace and no global binary is installed, use `cargo run -- <args>`.
- Verify the binary with `unity-cli --version` before debugging higher-level workflows.

## Instance Selection

- Use `unity-cli system ping` when a single active target is expected.
- Use `unity-cli instances list` when multiple editors may be running.
- Use `unity-cli instances set-active <host:port>` only after confirming the target is `up`.

## Command Routing

- Prefer typed subcommands for stable workflows such as `system`, `scene`, and `instances`.
- Use `raw` when only the low-level tool exists or you need an exact tool payload.
- Use `--output json` when another tool or script will consume the result.

## CI Notes

- Set `UNITY_CLI_HOST` and `UNITY_CLI_PORT` explicitly in CI.
- Keep JSON payloads quoted as a single shell argument.
- If connectivity fails in CI, report the resolved host and port before retrying.
Loading
Loading