Skip to content

Commit d7b4f43

Browse files
authored
Merge pull request #9 from aldefy/feat/plugin-distribution
feat: distribute compose-expert skill as a versioned plugin (v2.1.0)
2 parents 6cb3b19 + b1d1a2e commit d7b4f43

13 files changed

Lines changed: 391 additions & 0 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "aldefy-compose-skill",
3+
"description": "Compose and Compose Multiplatform skills maintained by Adit Lal.",
4+
"owner": {
5+
"name": "Adit Lal",
6+
"url": "https://github.com/aldefy"
7+
},
8+
"plugins": [
9+
{
10+
"name": "compose-expert",
11+
"source": "./",
12+
"description": "Compose expert skill — state, animations, navigation, performance, PR review, M3 motion."
13+
}
14+
]
15+
}

.claude-plugin/plugin.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "compose-expert",
3+
"version": "2.1.0",
4+
"description": "Compose and Compose Multiplatform expert skill — state, animations, navigation, performance, design-to-code, PR review mode, M3 motion.",
5+
"author": {
6+
"name": "Adit Lal",
7+
"url": "https://aditlal.dev"
8+
},
9+
"homepage": "https://github.com/aldefy/compose-skill",
10+
"repository": {
11+
"type": "git",
12+
"url": "https://github.com/aldefy/compose-skill"
13+
},
14+
"license": "MIT",
15+
"skills": [
16+
"../jetpack-compose-expert-skill"
17+
],
18+
"keywords": [
19+
"android",
20+
"jetpack-compose",
21+
"compose-multiplatform",
22+
"material3",
23+
"code-review",
24+
"tv-compose",
25+
"kotlin"
26+
]
27+
}

.copilot/plugin.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: compose-expert
2+
version: 2.1.0
3+
description: >
4+
Compose and Compose Multiplatform expert skill — state, animations, navigation,
5+
performance, design-to-code, PR review mode, M3 motion.
6+
author:
7+
name: Adit Lal
8+
url: https://aditlal.dev
9+
repository: https://github.com/aldefy/compose-skill
10+
license: MIT
11+
skills:
12+
- ../jetpack-compose-expert-skill
13+
keywords:
14+
- android
15+
- jetpack-compose
16+
- compose-multiplatform
17+
- material3
18+
- code-review
19+
- tv-compose
20+
- kotlin

.github/workflows/release.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
release:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- name: Install yq
18+
run: |
19+
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
20+
sudo chmod +x /usr/local/bin/yq
21+
22+
- name: Assert version consistency
23+
run: bash scripts/check-versions.sh "${GITHUB_REF_NAME}"
24+
25+
- name: Extract CHANGELOG section for this version
26+
id: changelog
27+
run: |
28+
VERSION="${GITHUB_REF_NAME#v}"
29+
awk -v ver="## [${VERSION}]" '
30+
$0 ~ ver {flag=1; next}
31+
/^## \[/ && flag {exit}
32+
flag {print}
33+
' CHANGELOG.md > release_body.md
34+
echo "--- extracted release body ---"
35+
cat release_body.md
36+
37+
- name: Prepend install/update header
38+
run: |
39+
{
40+
echo "## Install / Update"
41+
echo
42+
echo "- **Claude Code:** \`/plugin update compose-expert\`"
43+
echo "- **Copilot CLI:** \`copilot plugin update aldefy/compose-skill\`"
44+
echo "- **Codex CLI:** \`git pull\` in your cloned skills dir"
45+
echo
46+
echo "---"
47+
echo
48+
cat release_body.md
49+
} > final_body.md
50+
mv final_body.md release_body.md
51+
52+
- name: Publish GitHub Release
53+
uses: softprops/action-gh-release@v2
54+
with:
55+
body_path: release_body.md
56+
draft: false
57+
prerelease: ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-beta') }}

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
11
# Superpowers specs and plans (local workflow artifacts)
22
docs/superpowers/
3+
4+
# Git worktrees (if created inside the repo)
5+
.worktrees/
6+
worktrees/
7+
8+
# Claude local settings (never committed)
9+
**/.claude/settings.local.json
10+
11+
# macOS
12+
.DS_Store

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,34 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [2.1.0] - 2026-04-15
6+
7+
### Changed (distribution)
8+
9+
- **Plugin distribution is now the supported install path.** Users who copied
10+
`jetpack-compose-expert-skill/` into `~/.claude/skills/` (or equivalent) are
11+
on an unmaintained path. See `docs/MIGRATION.md`.
12+
- `SKILL.md` now carries a `version:` frontmatter field and a migration banner.
13+
The banner will remain through v2.x and escalate in v3.0.
14+
15+
### Added
16+
17+
- Claude Code plugin manifest (`.claude-plugin/plugin.json`) and marketplace
18+
entry (`.claude-plugin/marketplace.json`).
19+
- Copilot CLI plugin manifest (`.copilot/plugin.yaml`).
20+
- GitHub Actions release workflow that asserts version consistency across five
21+
locations and publishes a GitHub Release on every `v*` tag.
22+
- `docs/INSTALL.md` and `docs/MIGRATION.md`.
23+
- `CONTRIBUTING.md` documenting the release flow.
24+
25+
### Migration notes
26+
27+
- **Claude Code:** `/plugin marketplace add aldefy/compose-skill`
28+
`/plugin install compose-expert`. Future updates: `/plugin update`.
29+
- **Copilot CLI:** `copilot plugin install aldefy/compose-skill`.
30+
- **Codex CLI:** no native plugin system — see `docs/INSTALL.md` for the
31+
git-clone + symlink path.
32+
533
## [2.0.0] - 2026-04-04
634

735
### Added

CONTRIBUTING.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Contributing
2+
3+
## Cutting a release
4+
5+
Five version locations must agree on every release. The
6+
`scripts/check-versions.sh` script enforces this and is run by CI on every
7+
tag push. Maintainer flow:
8+
9+
1. **Bump the five version locations** to the new semver string (e.g. `2.2.0`):
10+
- `.claude-plugin/plugin.json``version`
11+
- `.copilot/plugin.yaml``version`
12+
- `jetpack-compose-expert-skill/SKILL.md` → frontmatter `version:`
13+
- The git tag you will push (e.g. `v2.2.0`)
14+
- `CHANGELOG.md` → new `## [2.2.0] - YYYY-MM-DD` heading
15+
2. **Update `CHANGELOG.md`** with an entry that includes, for any breaking
16+
change, a `### Migration notes` subsection.
17+
3. **Run the version check locally** before tagging:
18+
19+
```
20+
bash scripts/check-versions.sh v2.2.0
21+
```
22+
23+
Expected: `OK: versions aligned at 2.2.0`.
24+
4. **Commit, tag, and push**:
25+
26+
```
27+
git add -A
28+
git commit -m "release: v2.2.0"
29+
git tag v2.2.0
30+
git push && git push --tags
31+
```
32+
5. **Verify the GitHub Release** was created by the `release.yml` workflow.
33+
It should contain the CHANGELOG section plus the install/update header.
34+
35+
## Semver rules for skill content
36+
37+
| Change type | Bump |
38+
|---|---|
39+
| Typo fix, link fix, small rewording | patch |
40+
| New reference file, new example, clarifying text | minor |
41+
| Plugin manifest schema change (new host, new field) | minor |
42+
| Removed/renamed reference, changed trigger routing, banner escalation | major |
43+
44+
## Pre-release validation checklist
45+
46+
Run before tagging a release:
47+
48+
- [ ] Fresh Claude Code install: marketplace add + install works; SKILL.md loads.
49+
- [ ] `/plugin update` picks up a trivial change tagged as the next patch.
50+
- [ ] Copilot CLI install works.
51+
- [ ] Codex symlink install works.
52+
- [ ] Stale-install banner surfaces when old-format SKILL.md (no `version:`) is loaded.

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@
1919

2020
---
2121

22+
## Install
23+
24+
This skill is distributed as a plugin. See **[docs/INSTALL.md](docs/INSTALL.md)** for per-host instructions:
25+
26+
- **Claude Code:** `/plugin marketplace add aldefy/compose-skill``/plugin install compose-expert`
27+
- **Copilot CLI:** `copilot plugin install aldefy/compose-skill`
28+
- **Codex CLI:** manual install — see INSTALL.md.
29+
30+
Already installed manually? See **[docs/MIGRATION.md](docs/MIGRATION.md)**.
31+
32+
## Updates
33+
34+
New versions are published as [GitHub Releases](https://github.com/aldefy/compose-skill/releases) with migration notes. Run `/plugin update` (Claude Code) or `copilot plugin update aldefy/compose-skill` (Copilot) to pick them up.
35+
36+
---
37+
2238
## The problem
2339

2440
AI coding tools generate Compose code that compiles but gets the details wrong. Incorrect `remember` usage, unstable recompositions, broken modifier ordering, deprecated navigation patterns, hallucinated APIs that don't exist. They guess at behavior instead of knowing it.

docs/INSTALL.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Installing the Compose Expert skill
2+
3+
This skill ships as a plugin. Pick your host.
4+
5+
## Claude Code
6+
7+
```
8+
/plugin marketplace add aldefy/compose-skill
9+
/plugin install compose-expert
10+
```
11+
12+
Update later with `/plugin update`.
13+
14+
## Copilot CLI
15+
16+
```
17+
copilot plugin install aldefy/compose-skill
18+
```
19+
20+
Update later with `copilot plugin update aldefy/compose-skill`.
21+
22+
## Codex CLI
23+
24+
Codex does not have a native plugin system yet. Manual install:
25+
26+
```
27+
git clone https://github.com/aldefy/compose-skill ~/.codex/skills-src/compose-skill
28+
ln -s ~/.codex/skills-src/compose-skill/jetpack-compose-expert-skill ~/.codex/skills/compose-expert
29+
```
30+
31+
Update later with `cd ~/.codex/skills-src/compose-skill && git pull`.
32+
33+
Watch [GitHub Releases](https://github.com/aldefy/compose-skill/releases) for update notifications — no automatic update channel exists for Codex users today.
34+
35+
## Coming from a manual file copy?
36+
37+
See [MIGRATION.md](MIGRATION.md).

docs/MIGRATION.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Migrating from the manual file-copy install
2+
3+
Before v2.1.0, this skill was distributed by having users copy files into
4+
`~/.claude/skills/` (or the Codex/Copilot equivalent). That path no longer
5+
receives updates.
6+
7+
## How to tell if you are on the stale path
8+
9+
Open `~/.claude/skills/compose-expert/SKILL.md` (or wherever you copied it).
10+
Look at the frontmatter at the top of the file.
11+
12+
- **If it has `version:` (e.g. `version: 2.1.0`)** → you are up to date or
13+
already on the plugin path. No action needed.
14+
- **If it has no `version:` field** → you are stale. Migrate using the steps
15+
below.
16+
17+
## How to migrate
18+
19+
### Claude Code
20+
21+
```
22+
rm -rf ~/.claude/skills/compose-expert
23+
/plugin marketplace add aldefy/compose-skill
24+
/plugin install compose-expert
25+
```
26+
27+
### Copilot CLI
28+
29+
```
30+
rm -rf ~/.copilot/skills/compose-expert
31+
copilot plugin install aldefy/compose-skill
32+
```
33+
34+
### Codex CLI
35+
36+
Codex has no native plugin system. Remove the old copy and follow the
37+
manual-install path in [INSTALL.md](INSTALL.md#codex-cli).
38+
39+
## Why you should migrate
40+
41+
- Automatic update notifications via `/plugin update` (or `git pull` for Codex).
42+
- Migration notes for breaking changes in every release.
43+
- Version pinning — you can roll back if a release breaks your workflow.

0 commit comments

Comments
 (0)