@erclx/aitk 3.35.1 โ 3.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enforce GitHub Actions job naming, granularity, dependency wiring, and bun pinning
|
|
3
|
+
paths:
|
|
4
|
+
- '.github/workflows/**'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CI workflow standards
|
|
8
|
+
|
|
9
|
+
## Triggers and pinning
|
|
10
|
+
|
|
11
|
+
- Include `workflow_dispatch` alongside the primary trigger on every workflow.
|
|
12
|
+
- Pin every action to a major version tag. Never `@latest` or `@main`.
|
|
13
|
+
- Run every job on `ubuntu-latest`.
|
|
14
|
+
|
|
15
|
+
## Job naming
|
|
16
|
+
|
|
17
|
+
- Name every job as an emoji followed by a title, such as `๐ก๏ธ Checks`, `๐งช Unit Tests`, `๐ฆ Build Check`, `๐ญ E2E Tests`, or `๐ Deploy`.
|
|
18
|
+
|
|
19
|
+
## Job granularity
|
|
20
|
+
|
|
21
|
+
- Fold static analysis, unit tests, and build into one job while the gate runs under two minutes end to end.
|
|
22
|
+
- Split them into parallel jobs once a run log puts the gate past two minutes.
|
|
23
|
+
- Give E2E, release, and deploy a job each from the start.
|
|
24
|
+
|
|
25
|
+
## Job dependencies
|
|
26
|
+
|
|
27
|
+
- Use `needs` for a data dependency, where a job consumes another job's artifact, or for a job whose cost is prohibitive against the gate in front of it. Leave every other job unwired so it runs in parallel.
|
|
28
|
+
- Gate E2E on the job that uploads the build artifact.
|
|
29
|
+
- Gate release and deploy on E2E.
|
|
30
|
+
- Emit a deploy, publish, or release job with a placeholder step and name what the caller fills in. Never guess a deploy command.
|
|
31
|
+
|
|
32
|
+
## Artifacts
|
|
33
|
+
|
|
34
|
+
- Upload an artifact on `if: failure()` alone, with `retention-days: 7`.
|
|
35
|
+
|
|
36
|
+
## Bun stack
|
|
37
|
+
|
|
38
|
+
- Use `oven-sh/setup-bun@v2` with `bun-version: latest`.
|
|
39
|
+
- Install with `bun install --frozen-lockfile`.
|
|
40
|
+
- Key the Playwright browser cache on the Playwright version string, never a static key.
|
|
41
|
+
|
|
42
|
+
## Authority
|
|
43
|
+
|
|
44
|
+
- Load the `aitk:ci-workflow` skill for the workflow template and the per-project adaptation. Report it rather than proceeding silently when the skill does not resolve.
|
|
@@ -14,4 +14,5 @@ description: Enforce planning standards before implementation
|
|
|
14
14
|
- Write or update tests as part of every implementation plan.
|
|
15
15
|
- Write the test for a behavior before the code that implements it. Confirm visual output after implementing it, not before.
|
|
16
16
|
- Run `aitk gov test-order` before shipping a branch. Fix what it names as reaching history ahead of its test.
|
|
17
|
+
- Load the `aitk:systematic-debugging` skill before proposing a fix for a failing test, a surfaced bug, or behavior nobody has explained yet, and report it rather than proceeding silently when the skill does not resolve.
|
|
17
18
|
- Do not modify code without a confirmed plan.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
extends = ""
|
|
2
|
-
# All
|
|
2
|
+
# All four folders whole. Every rule authored under them ships to a base
|
|
3
3
|
# consumer, so adding one is a single edit rather than a file and a name here.
|
|
4
4
|
# `snippets` carries the `@`-reference convention rule, which lost its only
|
|
5
|
-
# other delivery path when `aitk snippets install` retired.
|
|
6
|
-
|
|
5
|
+
# other delivery path when `aitk snippets install` retired. `ci` carries the
|
|
6
|
+
# workflow rule, whose glob is the only inbound route to the `ci-workflow`
|
|
7
|
+
# skill.
|
|
8
|
+
rules = ["core", "claude", "snippets", "ci", "120-bash"]
|
package/package.json
CHANGED
package/standards/rule.md
CHANGED
|
@@ -32,14 +32,14 @@ Write both when both apply. A rule stating the directive and a skill stating how
|
|
|
32
32
|
## Location
|
|
33
33
|
|
|
34
34
|
- Rules live at `.claude/rules/<subdirectory>/<n>-<slug>.md`
|
|
35
|
-
- Subdirectories group by domain: `core/`, `lang/`, `framework/`, `lib/`, `ui/`, `claude/`
|
|
35
|
+
- Subdirectories group by domain: `core/`, `lang/`, `framework/`, `lib/`, `ui/`, `claude/`, `snippets/`, `ci/`
|
|
36
36
|
- `<n>` is a number from the band reserved for the rule's source and `<slug>` is a one-to-three-word kebab topic
|
|
37
37
|
- A rule the project authored itself lives at `.claude/rules/project/<subdirectory>/<n>-<slug>.md`, keeping the same subdirectory names
|
|
38
38
|
- Give every rule a numeric prefix. A bare-word filename reads as a folder name where a stack names its rules, so a rule without one is unreachable from a stack entry.
|
|
39
39
|
|
|
40
40
|
## Reserved numbers
|
|
41
41
|
|
|
42
|
-
`000-899` is reserved for a rule set that ships to targets. `000-599` is what the six subdirectories above already divide, at 100 per subdirectory, and `600-899` is
|
|
42
|
+
`000-899` is reserved for a rule set that ships to targets. `000-599` is what the first six subdirectories above already divide, at 100 per subdirectory. `ci/` was the first to draw from the headroom past that, taking `700-799`, and `600-699` with `800-899` is what remains for a subdirectory a shipped set has not added yet.
|
|
43
43
|
|
|
44
44
|
A project-authored rule takes `900-999`, one sequence across every subdirectory under `.claude/rules/project/`. Scanning for a free number instead is what fails, because a shipped set fills its own band release by release, so what reads as free today is what a later release lands on. One target authored `claude/561-self-check.md` on a day nothing shipped at 561, met `claude/561-teach.md` on its next install, and now reads two numbers differently from everywhere else.
|
|
45
45
|
|