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
21 changes: 10 additions & 11 deletions .claude/upstream.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ Upstream file paths and the tracking model (release-tag vs commit) are listed pe

- **Upstream:** https://github.com/caffeinelabs/skills
- **Tracking model:** commit-based (this repo has no releases/tags). Watch for changes to the skill folder between the pinned commit and `main`; the per-skill `version:` frontmatter field is a secondary signal.
- **Commit:** 9274f9bb5d34db77c29304ea32ec5ad7bdc3d6fc
- **Upstream version:** 0.1.8 (skill frontmatter `version:`)
- **Last synced:** 2026-08-24
- **Commit:** 38a113689f275bb2efe5fa87e4b151c4a8899e8d
- **Upstream version:** 0.2.0 (skill frontmatter `version:`)
- **Last synced:** 2026-08-31
- **Upstream files:**
- `skills/writing-motoko/SKILL.md`
- `skills/writing-motoko/api-reference.md → references/api-reference.md`
Expand All @@ -23,7 +23,7 @@ Upstream file paths and the tracking model (release-tag vs commit) are listed pe
- `skills/writing-motoko/references/reserved-keywords.md → references/reserved-keywords.md`
- `skills/writing-motoko/references/type-conversions.md → references/type-conversions.md`
- **icskills-owned sections (do not overwrite from upstream):**
- **Frontmatter (entire block):** upstream ships `version:`, an object `compatibility:` (`toolchain.moc`/`mops.core`/`mops` CLI major), and `caffeineai-subscription:`, and no `metadata:` block. We replace it with our schema: owned `description` (tuned for repo-wide trigger evals), `license: Apache-2.0`, string `compatibility` (`moc >= 1.11.2, core >= 2.5.0, mops >= 3.0.0`), and `metadata.title`/`category`.
- **Frontmatter (entire block):** upstream ships `version:`, an object `compatibility:` (`toolchain.moc`/`mops.core`/`mops` CLI major), and `caffeineai-subscription:`, and no `metadata:` block. We replace it with our schema: owned `description` (tuned for repo-wide trigger evals), `license: Apache-2.0`, string `compatibility` (`moc >= 1.11.2, core >= 2.6.0, mops >= 3.0.0`), and `metadata.title`/`category`.
- **mops docs link → `mops-cli` skill:** the body's `https://docs.mops.one/` reference is rewritten to "Load the `mops-cli` skill …". Do not restore the external link on sync.
- **`## Additional Resources` → `## Additional References`** (section renamed), plus an extra `- **mops tooling**: Load \`mops-cli\` …` bullet not in upstream.
- **Reference-file paths:** upstream keeps `api-reference.md`/`examples.md` at the skill root; icskills places all non-SKILL files under `references/`, so intra-skill links are rewritten to `references/…`.
Expand All @@ -34,9 +34,9 @@ Upstream file paths and the tracking model (release-tag vs commit) are listed pe

- **Upstream:** https://github.com/caffeinelabs/skills
- **Tracking model:** commit-based (no releases/tags). Same as `writing-motoko`.
- **Commit:** 9274f9bb5d34db77c29304ea32ec5ad7bdc3d6fc
- **Commit:** 38a113689f275bb2efe5fa87e4b151c4a8899e8d
- **Upstream version:** 0.2.2 (skill frontmatter `version:`, unchanged — no content changes in this sync)
- **Last synced:** 2026-08-24
- **Last synced:** 2026-08-31
- **Upstream files:**
- `skills/migrating-motoko-actors/SKILL.md`
- `skills/migrating-motoko-actors/examples.md → references/examples.md`
Expand All @@ -51,9 +51,9 @@ Upstream file paths and the tracking model (release-tag vs commit) are listed pe

- **Upstream:** https://github.com/caffeinelabs/skills
- **Tracking model:** commit-based (no releases/tags). Same as `writing-motoko`.
- **Commit:** 9274f9bb5d34db77c29304ea32ec5ad7bdc3d6fc
- **Commit:** 38a113689f275bb2efe5fa87e4b151c4a8899e8d
- **Upstream version:** 0.1.3 (skill frontmatter `version:`, unchanged — no content changes in this sync)
- **Last synced:** 2026-08-24
- **Last synced:** 2026-08-31
- **Upstream file:** `skills/troubleshooting-motoko-migrations/SKILL.md`
- **icskills-owned sections (do not overwrite from upstream):**
- **Frontmatter (entire block):** same transform as the other two. Body is otherwise 1:1 with upstream (the `## Related skills` heading is kept as-is).
Expand All @@ -64,10 +64,9 @@ Upstream file paths and the tracking model (release-tag vs commit) are listed pe

- **Upstream:** https://github.com/caffeinelabs/skills
- **Tracking model:** commit-based (no releases/tags). Same as `writing-motoko`.
- **Commit:** 90a2433578d0ea53fdbce3f51fb1dd3b8145ac04
- **Commit:** 38a113689f275bb2efe5fa87e4b151c4a8899e8d
- **Upstream version:** 0.1.0 (skill frontmatter `version:`)
- **Last synced:** 2026-08-28
- **Pin note:** added at `90a2433` while the other three `caffeinelabs/skills` entries were still pinned at `9274f9b` (the skill did not exist there). Pins realign on the next full `caffeinelabs/skills` sync — until then, a sync issue may re-show this skill's content as newly added; verify against the local file instead of re-applying.
- **Last synced:** 2026-08-31
- **Upstream files:**
- `skills/reviewing-motoko/SKILL.md`
- `skills/reviewing-motoko/references/state-and-persistence.md → references/state-and-persistence.md`
Expand Down
31 changes: 31 additions & 0 deletions evaluations/writing-motoko.json
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,37 @@
"Mentions `persistent actor { ... }` as the per-actor alternative if the flag can't be set",
"Does NOT suggest adding a `stable` keyword to fix M0220"
]
},
{
"name": "Arrays have contains for membership",
"prompt": "In Motoko with mo:core, write a single expression that checks whether the `[Text]` array `tags` contains the exact string \"urgent\". Just the expression, no surrounding function.",
"expected_behaviors": [
"Uses `tags.contains(\"urgent\")` — `[T]` arrays DO have `contains` in mo:core",
"Passes only the element — `equal` is an implicit argument, so does NOT pass `Text.equal` explicitly",
"Does NOT claim arrays have no `contains`",
"Does NOT fall back to `tags.indexOf(\"urgent\") != null` or `tags.any(func t = t == \"urgent\")` as the primary answer"
]
},
{
"name": "Numeric conversion uses toX on the source value",
"prompt": "In Motoko with mo:core, `sum` and `count` are both `Nat`. Write the expression computing their average as a `Float`, plus the import it needs. No surrounding function, no deploy steps.",
"expected_behaviors": [
"Uses receiver conversions on the source values: `sum.toFloat() / count.toFloat()`",
"Does NOT use deprecated `Module.fromX` calls such as `Float.fromInt(...)`, `Float.fromInt64(...)`, or `Nat64.fromNat(...)`",
"Does NOT chain through the sized numeric modules (`Nat64` / `Int64`) to reach `Float`",
"Imports `mo:core/Nat` (the module supplying `Nat.toFloat`), not `Float`/`Int64`/`Nat64` for the conversion"
]
},
{
"name": "Result error type is a variant, not Text",
"prompt": "Write the Motoko error type and the update-method signature for `book(roomId : Nat)`, which can fail because the room is unknown, the slot is already taken, or the caller is not authorized. Just the type and the signature — no body, no deploy steps.",
"expected_behaviors": [
"Returns `async Result.Result<Ok, Err>` using `mo:core/Result`",
"Declares the error as a variant with one tag per failure (e.g. `#unknownRoom : Nat`, `#slotTaken`, `#notAuthorized`)",
"Does NOT use `Result<Ok, Text>` or any `Text` error as the discriminator",
"Does NOT propose trapping (`Runtime.trap`) for these caller-fixable failures",
"Uses `public shared ({ caller }) func` since authorization is one of the failure cases"
]
}
],
"trigger_evals": {
Expand Down
Loading
Loading