Skip to content

Commit dbad73f

Browse files
authored
ci: ⚙️ Add new CI jobs (#20)
Added a raft of new CI checks to make sure our slop is less sloppish. To corral all these new commands, i've addded [just](https://github.com/casey/just) to sync CI commands with local. It's mildly annoying but should hopefully catch weird formatting and lint which might creep in with all the generated code going into this repo.
1 parent efd20f4 commit dbad73f

25 files changed

Lines changed: 454 additions & 172 deletions

File tree

.github/workflows/markdown.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Markdown
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "**/*.md"
8+
- ".markdownlint-cli2.yaml"
9+
- "justfile"
10+
- ".github/workflows/markdown.yml"
11+
pull_request:
12+
paths:
13+
- "**/*.md"
14+
- ".markdownlint-cli2.yaml"
15+
- "justfile"
16+
- ".github/workflows/markdown.yml"
17+
18+
permissions:
19+
contents: read
20+
21+
jobs:
22+
markdownlint:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v4
26+
- uses: oven-sh/setup-bun@v2
27+
with:
28+
bun-version: "1.3.10"
29+
- uses: extractions/setup-just@v3
30+
with:
31+
just-version: "1.46.0"
32+
- name: Lint Markdown
33+
run: just markdown

.github/workflows/release.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,8 @@ jobs:
196196
- name: Determine plugin and create release
197197
env:
198198
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
199+
BRANCH: ${{ github.event.pull_request.head.ref }}
199200
run: |
200-
BRANCH="${{ github.event.pull_request.head.ref }}"
201-
202201
# Extract plugin name from branch: release/<plugin>/v<version>
203202
PLUGIN=$(echo "$BRANCH" | sed -n 's|^release/\(.*\)/v.*$|\1|p')
204203

.github/workflows/shell.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Shell
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "core-engineering/**/*.sh"
8+
- "core-engineering/hooks/session-start"
9+
- ".shellcheckrc"
10+
- "justfile"
11+
- ".github/workflows/shell.yml"
12+
pull_request:
13+
paths:
14+
- "core-engineering/**/*.sh"
15+
- "core-engineering/hooks/session-start"
16+
- ".shellcheckrc"
17+
- "justfile"
18+
- ".github/workflows/shell.yml"
19+
20+
permissions:
21+
contents: read
22+
23+
jobs:
24+
shellcheck:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: oven-sh/setup-bun@v2
29+
with:
30+
bun-version: "1.3.10"
31+
- uses: extractions/setup-just@v3
32+
with:
33+
just-version: "1.46.0"
34+
- name: Run ShellCheck
35+
run: just shellcheck
36+
37+
shfmt:
38+
runs-on: ubuntu-latest
39+
steps:
40+
- uses: actions/checkout@v4
41+
- uses: actions/setup-go@v5
42+
with:
43+
go-version: "1.25"
44+
- uses: extractions/setup-just@v3
45+
with:
46+
just-version: "1.46.0"
47+
- name: Check shell formatting
48+
run: just shfmt-check

.github/workflows/skills-spec.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Skills Spec
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- "**/SKILL.md"
8+
- "justfile"
9+
- ".github/workflows/skills-spec.yml"
10+
pull_request:
11+
paths:
12+
- "**/SKILL.md"
13+
- "justfile"
14+
- ".github/workflows/skills-spec.yml"
15+
16+
permissions:
17+
contents: read
18+
19+
jobs:
20+
validate:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v4
24+
- uses: actions/setup-python@v5
25+
with:
26+
python-version: "3.12"
27+
- uses: extractions/setup-just@v3
28+
with:
29+
just-version: "1.46.0"
30+
- name: Install skills-ref
31+
run: >-
32+
python3 -m pip install
33+
"git+https://github.com/agentskills/agentskills.git@0c61f1efc081cbb1ffe3420f6bbcb5b08920e133#subdirectory=skills-ref"
34+
- name: Validate skills
35+
run: just skills-spec

.github/workflows/tests.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,26 @@ jobs:
1313
name: LLM-based tests
1414
runs-on: ubuntu-latest
1515
timeout-minutes: 30
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
test-type:
20+
- test-skill-triggering
21+
- test-explicit-skill-requests
22+
- test-claude-code
23+
1624
steps:
1725
- uses: actions/checkout@v4
1826

27+
- uses: extractions/setup-just@v3
28+
with:
29+
just-version: "1.46.0"
30+
1931
- name: Install Claude Code CLI
2032
run: npm install -g @anthropic-ai/claude-code@latest
2133

22-
- name: Run skill triggering tests
23-
env:
24-
ANTHROPIC_AUTH_TOKEN: ${{ secrets.ANTHROPIC_AUTH_TOKEN }}
25-
ANTHROPIC_BASE_URL: ${{ secrets.ANTHROPIC_BASE_URL }}
26-
run: ./core-engineering/tests/skill-triggering/run-all.sh
27-
28-
- name: Run explicit skill request tests
29-
env:
30-
ANTHROPIC_AUTH_TOKEN: ${{ secrets.ANTHROPIC_AUTH_TOKEN }}
31-
ANTHROPIC_BASE_URL: ${{ secrets.ANTHROPIC_BASE_URL }}
32-
run: ./core-engineering/tests/explicit-skill-requests/run-all.sh
33-
34-
- name: Run Claude Code skill tests
34+
- name: Run ${{ matrix.test-type }}
3535
env:
3636
ANTHROPIC_AUTH_TOKEN: ${{ secrets.ANTHROPIC_AUTH_TOKEN }}
3737
ANTHROPIC_BASE_URL: ${{ secrets.ANTHROPIC_BASE_URL }}
38-
run: ./core-engineering/tests/claude-code/run-skill-tests.sh --timeout 900
38+
run: just ${{ matrix.test-type }}

.github/workflows/yaml-actions.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: YAML and Actions
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths:
7+
- ".github/**/*.yml"
8+
- ".github/**/*.yaml"
9+
- ".yamllint.yml"
10+
- "justfile"
11+
- ".github/workflows/yaml-actions.yml"
12+
pull_request:
13+
paths:
14+
- ".github/**/*.yml"
15+
- ".github/**/*.yaml"
16+
- ".yamllint.yml"
17+
- "justfile"
18+
- ".github/workflows/yaml-actions.yml"
19+
20+
permissions:
21+
contents: read
22+
23+
jobs:
24+
yamllint:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: actions/setup-python@v5
29+
with:
30+
python-version: "3.12"
31+
- uses: extractions/setup-just@v3
32+
with:
33+
just-version: "1.46.0"
34+
- name: Install yamllint
35+
run: python3 -m pip install yamllint==1.38.0
36+
- name: Lint GitHub YAML
37+
run: just yamllint
38+
39+
actionlint:
40+
runs-on: ubuntu-latest
41+
steps:
42+
- uses: actions/checkout@v4
43+
- uses: actions/setup-go@v5
44+
with:
45+
go-version: "1.25"
46+
- uses: extractions/setup-just@v3
47+
with:
48+
just-version: "1.46.0"
49+
- name: Lint GitHub Actions workflows
50+
run: just actionlint

.markdownlint-cli2.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
config:
2+
MD013: false
3+
MD022: false
4+
MD024: false
5+
MD026: false
6+
MD029: false
7+
MD031: false
8+
MD032: false
9+
MD033: false
10+
MD034: false
11+
MD036: false
12+
MD040: false
13+
MD041: false
14+
MD060: false
15+
globs:
16+
- "**/*.md"
17+
ignores:
18+
- ".git/**"

.shellcheckrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
external-sources=true
2+
source-path=SCRIPTDIR

.yamllint.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extends: default
2+
3+
ignore: |
4+
.git/
5+
6+
rules:
7+
comments: disable
8+
document-start: disable
9+
line-length: disable
10+
truthy: disable

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,27 @@ Start a new session in your chosen platform and ask for something that should tr
7171

7272
## Contributing
7373

74+
### Development
75+
76+
To run the root `just check` and `just test` recipes locally, install these CLIs and make sure they are on your `PATH`:
77+
78+
- `just`
79+
- `bun` (provides `bunx` for `markdownlint-cli2` and `shellcheck`)
80+
- `go` (used via `go run` for `shfmt` and `actionlint`)
81+
- `yamllint`
82+
- `typos`
83+
- `skills-ref`
84+
- `claude` (Claude Code CLI)
85+
- `jq`
86+
- `node` and `npm`
87+
- `python3`
88+
- `git`
89+
- GNU `timeout` (`coreutils`; on macOS you may need to install it separately so `timeout` is available in `PATH`)
90+
91+
You do not need to install `markdownlint-cli2`, `shellcheck`, `shfmt`, or `actionlint` separately because the root [justfile](./justfile) runs them through `bunx` and `go run`.
92+
93+
The Claude-based test suites also expect the local plugin to be enabled. This can be most easily be enabled via the `--plugin-dir` command line option.
94+
7495
### Adding a skill to an existing plugin
7596

7697
The `writing-skills` skill in the `plugin-management` plugin guides you through creating and testing new skills.

0 commit comments

Comments
 (0)