Implement
sickn33/agentic-awesome-skills
Implement a piece of work based on a PRD or set of issues. An agent skill from sickn33/agentic-awesome-skills.
Fill a gap in an existing ballerina/<name stdlib — implement a function marked Not Yet Supported, promote a Partially Supported row, or fix a behavioural divergence.
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gap --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .claude/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .claude/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gapType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gap --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .agents/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .agents/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gap --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .cursor/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .cursor/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ballerina-nutcracker/ballerina.git --path .agents/skills/fill-stdlib-gap--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gap --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .gemini/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .gemini/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gapInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .github/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .github/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ballerina-nutcracker/ballerina fill-stdlib-gap --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ballerina-nutcracker/ballerina.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/fill-stdlib-gap .opencode/skills/fill-stdlib-gap && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fill-stdlib-gap" agent skill from https://github.com/ballerina-nutcracker/ballerina/tree/main/.agents/skills/fill-stdlib-gap into .opencode/skills/fill-stdlib-gap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fill-stdlib-gap", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fill-stdlib-gapFill a gap in an existing ballerina/<name stdlib — implement a function marked Not Yet Supported, promote a Partially Supported row, or fix a behavioural divergence.
Fill Stdlib Gap is an agent skill from ballerina-nutcracker/ballerina. Fill a gap in an existing ballerina/<name stdlib — implement a function marked Not Yet Supported, promote a Partially Supported row, or fix a behavioural divergence. Use when the target stdlib already exists under lib/stdlibs/ballerina/. For brand-new stdlibs, use add-stdlib-support.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Native Ballerina Interpreter. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0cefa3f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gomakegitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fill Stdlib Gap loads about 4.1k tokens when it runs. Until then it costs about 76 tokens; SKILL.md has 2,030 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ballerina-nutcracker/ballerina at commit 0cefa3f, republished under its Apache-2.0 licence (© ballerina-nutcracker). 2,030 words, ~4,113 tokens.
.claude/skills/fill-stdlib-gap/SKILL.md (or your agent's skills folder).Lightweight 5-step workflow for adding a missing function, promoting a Not Yet Supported row to Supported, or fixing a divergence. Unlike add-stdlib-support, this skill has no plan-approval gate and no library-evaluation gate — the stdlib already exists, its file layout and wire-up are already in place, and the surface change is small.
If the user wants to port a brand-new stdlib (lib/stdlibs/ballerina/<name>/ does not exist), use add-stdlib-support instead.
Coding rules and the PAL constraint live in AGENTS.md at the repo root — read it before editing. Shared templates and patterns live in add-stdlib-support's directory (../add-stdlib-support/templates/, ../add-stdlib-support/references/) — this skill points there rather than repeating them.
Golden rule (same as add-stdlib-support): the Ballerina public interface must stay identical to jBallerina's, and if the jBallerina reference ships a docs/spec/spec.md, its prose must exactly match the Go implementation's actual behaviour for the surface being touched. A spec/implementation mismatch is a defect to resolve before the gap-fill is done — not something to leave unreconciled.
Open the target stdlib's README, e.g. lib/stdlibs/ballerina/io/0.0.1/go1.27/README.md, and confirm the row to be promoted.
add-stdlib-support or may just need a new row added to the table.State back to the user, in one sentence, exactly what will change (e.g., "Promoting File read — stream of lines from Not Yet Supported to Supported by implementing fileReadLinesAsStream").
This step is mandatory and blocking. Do not proceed to Step 3 until the jBallerina source has been read and the behaviour is confirmed from code — not from doc comments, not from training knowledge.
Ask the user for the path to the corresponding jBallerina library implementation root, e.g. ~/github/ballerina-platform/module-ballerina-<name>/. If the user has not provided it, stop and ask before doing anything else.
Read only the .bal and Java code relevant to the targeted function(s) — do not enumerate the whole library. Note:
isolated, public, has a default value, etc.If <root>/docs/spec/spec.md exists (optional — not every jBallerina repo ships one), read the section covering the targeted surface. It's prose written for humans and often states intent or edge-case handling that neither the .bal signature nor the Java code spells out directly. Treat any mismatch between the spec and the Java/.bal source as something to raise with the user, not something to silently resolve one way.
When the feature involves a configuration record, enum, or multi-mode flag (e.g. a compression, httpVersion, or retryConfig field), doc comments and type signatures are insufficient — they describe intent, not mechanics. For these cases you must also read the Java action or handler that consumes the config value at runtime and trace the actual code path for each enum variant or flag value. Common locations:
AbstractHTTPAction.java, HttpClientAction.java)HttpUtil.java, ConnectionManager.java)Do not assume you know what a jBallerina feature does from prior training. Implementations frequently differ from what documentation or naming implies. If reading the source leaves behaviour ambiguous (e.g. conflicting comments, dead code, platform-specific branches), stop and ask the user rather than making an assumption. A wrong assumption that ships silently is worse than a clarifying question.
Produce a focused 3-column table for the touched surface only:
| Feature | Risk | Resolution |
|---|---|---|
| ... | ... | ... |
Check the hot-spots in ../add-stdlib-support/references/parity-risks.md, scoped to just this surface (decimal precision, UTF-8 vs UTF-16 string ops, NaN/overflow, error-message wording on the outer error, plus the module's domain-specific risks). Where a row's behaviour is verifiable by running code, verify it with the run-jballerina skill — run a small probe on jBallerina (bal run) and on this interpreter, and compare — rather than reasoning from documentation.
If docs/spec/spec.md exists: check every behavioural claim it makes about the touched surface against what the Go implementation will actually do. Carry any mismatch found here forward to Step 5's verify checklist to confirm it was resolved, not just noticed.
Rules:
Supported behaviour, or in a stdlib it depends on, rather than a new architectural constraint — isn't just an "unavoidable" row: also follow ../add-stdlib-support/references/reporting-limitations.md to get it tracked upstream.If every row is "No risk identified", say so and move on.
You are editing existing files, not creating new ones. In particular:
Ballerina.toml, Bala.toml already exist).lib/rt/libs.go — the blank import is already there.test_util/testphases/phases.go — the builtinStdlibs entry is already there.Dependencies.toml: if the gap being filled adds a new import ballerina/<dep>; to the .bal source that was not there before, you must declare the dependency in Dependencies.toml — format and rationale in ../add-stdlib-support/templates/manifests.md (missing entries cause Unknown import: ballerina/<dep> at runtime). Also verify <dep> appears before this package in the builtinStdlibs list in test_util/testphases/phases.go (it almost certainly already does).import ballerina/lang.<x>;, that import only resolves through the isLangImport switch in semantics/symbol_resolver.go — check the langlib is wired there.What you do edit:
lib/stdlibs/ballerina/<name>/0.0.1/go1.27/<name>.bal (or sibling .bal files like file.bal, types.bal) — add the public function, type declaration, or extern signature. Preserve the existing license header and doc-comment style. Function names match jBallerina exactly.lib/stdlibs/ballerina/<name>/0.0.1/go1.27/native/<name>.go (or sibling .go files like file_io.go) — add the Go implementation. Register it in the existing init<Name>Module function:func init<Name>Module(rt *runtime.Runtime) {
// existing registrations...
runtime.RegisterExternFunction(rt, orgName, moduleName, "externNewFn", externNewFnExtern(rt))
}native/<feature>.go alongside the existing ones — keep package native and reuse the orgName / moduleName constants already defined.Shared patterns — read the relevant file only when the situation applies:
../add-stdlib-support/references/pal.md. Three files must change; missing TestPal = nil-pointer panics in corpus tests.../add-stdlib-support/references/native-state.md. Never add fields to values.Map for this; see crypto/native/keydata.go for the weak-map reference implementation.values.BalToGoJSON / values.GoToBalValue; never duplicate the conversion per-stdlib.If implementing this gap triggers an interpreter panic or compile error not explained by AGENTS.md, don't silently pick a workaround — present the developer with the same options as add-stdlib-support Step 3 (fix the interpreter / work around in Ballerina / move to Go native / scope out). Whichever they choose, draft an issue per ../add-stdlib-support/references/reporting-limitations.md and point them to https://github.com/ballerina-nutcracker/ballerina/issues — this is a language limitation worth tracking upstream independently of the local workaround.
Coding rules: follow AGENTS.md (license header on every new file, no per-line comments, no new public symbols unless required by the public API).
Library corpus tests live under corpus/lib/subset<N>/ — a flat directory of <name>-<suffix>.bal files, e.g. corpus/lib/subset2/crypto-hash1-v.bal — a sibling of corpus/bal/ (the generic corpus/bal/subset1..9/NN-category/ language-feature tests) and of corpus/project/. Each lib/subset<N> is a released library-support milestone documented in doc/library/subset<N>.md.
Find this stdlib's existing tests first: find corpus/lib -name '<name>-*.bal' locates which subset<N> it currently lives in — reuse that one by default. Ask the developer to confirm rather than assuming, though: if this gap-fill is significant enough to be its own release milestone, they may want it filed under a new subset<N+1> instead (create doc/library/subset<N+1>.md following subset2.md's intro-paragraph pattern in that case). Suffixes per AGENTS.md: *-v.bal (valid), *-e.bal (compile errors), *-p.bal (panics). No leading zeros in numeric parts. *-v.bal tests must produce empty stderr — structure the test (e.g. filtered log levels) so nothing is emitted there.
Cover the new behaviour from .bal — a corpus test exercises the full compiler → BIR → interpreter pipeline and is measured by the native-coverage harness (-coverpkg=./lib/stdlibs/... over ./corpus/...). Add a Go unit test only for branches genuinely unreachable from Ballerina (defensive type/arity guards, nil guards, interface-contract paths), kept minimal with a comment explaining why. Don't write wrong-type extern arg guards — the type checker rejects wrong types at compile time. See the manage-corpus-tests "Test philosophy" section. If you find existing native code that can never execute through Ballerina, remove it rather than testing it.
Coverage gate, same as add-stdlib-support: .github/workflows/native-ci.yml uploads coverage to Codecov (flags: native), and codecov.yml's coverage.status.patch.default.target: 80% fails the PR if patch coverage — coverage of just the lines this change adds or touches — drops below 80%. Unlike a brand-new stdlib, the package's overall coverage % is not a reliable stand-in here: the existing, already-tested code dilutes it, so a poorly-tested new function can hide inside a healthy-looking package total. Check the touched lines directly:
go test -count=1 -coverpkg=./lib/stdlibs/ballerina/<name>/... \
-coverprofile=/tmp/<name>-coverage.out -covermode=atomic \
./corpus/... ./lib/stdlibs/ballerina/<name>/...
go tool cover -func=/tmp/<name>-coverage.out | grep '<newFunctionName>'or open an annotated view of just the new/changed lines with go tool cover -html=/tmp/<name>-coverage.out. Add corpus cases until every new branch is exercised — don't rely on the package-total percentage looking fine.
Regenerate goldens via the manage-corpus-tests skill:
go test ./corpus -updateReview git diff corpus/ before committing, and revert any unrelated golden drift -update introduces (some stages have non-deterministic ordering).
A library test's -update run only ever writes corpus/integration/lib/**.txtar: it has no ExpectedPath (see add-stdlib-support), so it never touches corpus/ast/, corpus/bir/, corpus/cfg/ or corpus/desugared/. A diff appearing there for this test means something is misconfigured.
Update the README row via the stdlib-readme-format skill:
Not Yet Supported → Supported, or Partially Supported → Supported if the caveats are resolved).lib/stdlibs/ballerina/README.md: recount this package's row and recompute the Total footer; if a behavioural change was added or removed, mirror it into the package's ### <name> subsection of the consolidated section.stdlib-readme-format validation checklist against the updated README (catches pre-existing violations too).doc/library/subset<N>.md (the subset the tests were added to above) to document the newly-covered surface — this is separate from, and in addition to, the per-package README.md.make build — no compilation errors in any workspace module.make vet — no vet warnings in any workspace module.go test ./corpus/... — all corpus tests pass.go run ./cli/cmd run <test>.bal for the new corpus test(s) — output matches @output markers.corpus/lib/subset<N>/ (the subset confirmed with the developer above), not the generic corpus/bal/subset1..9/ tree.doc/library/subset<N>.md documents the newly-covered surface.native/ is exercised (checked via go tool cover -func=... or -html=..., not the package-total %) — Codecov's patch-coverage check (codecov.yml, native-ci.yml) targets 80% on just the diff and will fail the PR otherwise.lib/stdlibs/ballerina/README.md aggregator updated (package row recounted, Total footer recomputed, behavioural changes mirrored if any changed).stdlib-readme-format validation checklist passes.validate-stdlib-contract skill on this package (at minimum, review its diff output for the touched surface) — the verdict must be PASS, or PASS with notes that you have reviewed.import ballerina/<dep> was added to the .bal source: Dependencies.toml updated with the new entry and dependencies = [...] field.palnative/ and wired into TestPal.docs/spec/spec.md exists in the jBallerina reference root: every behavioural claim it makes about the touched surface matches the shipped Go implementation exactly — any mismatch found during Step 3 or implementation has been resolved, not left unreconciled.../add-stdlib-support/references/reporting-limitations.md, and the developer told where to file it.In one short paragraph: which row was promoted, what was added (function names, file paths), which corpus/lib/subset<N>/ the tests landed in (and whether doc/library/subset<N>.md was created or extended), any divergences recorded, the validate-stdlib-contract verdict, confirmation that the new/touched lines are covered (per the coverage-gate check above), and any language-limitation or dependency-bug issue drafted for upstream reporting.
© ballerina-nutcracker, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/fill-stdlib-gap of ballerina-nutcracker/ballerina.
Open the folder on GitHubat commit 0cefa3f
Fill Stdlib Gap next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fill Stdlib Gap this skillballerina-nutcracker/ballerina | 120 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Implementsickn33/agentic-awesome-skills | 47k | 5 repos | ~306 | Automated safety check: Pass | MIT | |
| Implementcodewhale-hq/Codewhale | 41k | — | ~190 | Automated safety check: Pass | MIT | |
| Gapsanthropics/claude-for-legal | 9.6k | 2 repos | ~229 | Automated safety check: Pass | Apache-2.0 | |
| Incremental Implementationaddyosmani/agent-skills | 103k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Implementbestofjs/bestofjs | 3.1k | 18 repos | ~109 | Automated safety check: Pass | MIT |
sickn33/agentic-awesome-skills
Implement a piece of work based on a PRD or set of issues. An agent skill from sickn33/agentic-awesome-skills.
codewhale-hq/Codewhale
Carry an authorized, defined request or approved plan through scoped edits and proportionate verification.
anthropics/claude-for-legal
Open gaps tracker — what's flagged and not yet closed. An agent skill from anthropics/claude-for-legal.
addyosmani/agent-skills
Delivers a change in thin vertical slices, each implemented, tested, verified and committed before the next, using vertical, contract-first or risk-first slicing.
bestofjs/bestofjs
Implement a piece of work based on a spec or set of tickets.
Automattic/simplenote-android
End-to-end implementation workflow: plan, implement, verify, commit, and open a draft PR.
ballerina-nutcracker/ballerina
Authoritative format contract for lib/stdlibs/ballerina/<name/0.0.1/go1.27/README.md files.
ballerina-nutcracker/ballerina
Port a new ballerina/<name stdlib package from jBallerina to this Go-native interpreter.
ballerina-nutcracker/ballerina
Validate that a ballerina/<name stdlib's Go public contract does not break the jBallerina public interface.
ballerina-nutcracker/ballerina
Run a given Ballerina source file with jBallerina to compare behaviour against this interpreter
ballerina-nutcracker/ballerina
A skill your agent uses when you are asked to fill in a subset doc (./doc/lang/subset.md)
ballerina-nutcracker/ballerina
Creating/updating corpus tests
Fill a gap in an existing ballerina/<name stdlib — implement a function marked Not Yet Supported, promote a Partially Supported row, or fix a behavioural divergence. Fill Stdlib Gap is an agent skill from ballerina-nutcracker/ballerina. Fill a gap in an existing ballerina/<name stdlib — implement a function marked Not Yet Supported, promote a Partially Supported row, or fix a behavioural divergence.
Fill Stdlib Gap fits situations like: the target stdlib already exists under lib/stdlibs/ballerina/.
Run `npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a claude-code`. Or copy the skill folder (.agents/skills/fill-stdlib-gap in ballerina-nutcracker/ballerina) into .claude/skills/fill-stdlib-gap in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a codex`. Or copy the skill folder (.agents/skills/fill-stdlib-gap in ballerina-nutcracker/ballerina) into .agents/skills/fill-stdlib-gap in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ballerina-nutcracker/ballerina --skill fill-stdlib-gap -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fill-stdlib-gap, .gemini/skills/fill-stdlib-gap, .github/skills/fill-stdlib-gap and .opencode/skills/fill-stdlib-gap in your project.
Going by SKILL.md and its folder, Fill Stdlib Gap needs the command-line tools its instructions call (go, make and git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Fill Stdlib Gap is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fill Stdlib Gap: Implement (sickn33/agentic-awesome-skills, 47k stars), Implement (codewhale-hq/Codewhale, 41k stars), Gaps (anthropics/claude-for-legal, 9.6k stars) and Incremental Implementation (addyosmani/agent-skills, 103k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ballerina-nutcracker (a GitHub organization) maintains it in ballerina-nutcracker/ballerina, which has 120 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 8, 2026.
Source: ballerina-nutcracker/ballerina on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.