Build And Profiling
pikax/verter
Build dependency chains, rebuild sequences, profiling with MCP, and Analysis MCP server setup for Verter
Discipline for the seam between two SDKs (or two sides of one contract) that the same hand writes.
$ npx skills add gridaco/grida --skill sdk-seam -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gridaco/grida sdk-seam --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/gridaco/grida.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/sdk-seam .claude/skills/sdk-seam && 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 "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .claude/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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/gridaco/grida/tree/main/.agents/skills/sdk-seamType 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 gridaco/grida --skill sdk-seam -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gridaco/grida sdk-seam --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/sdk-seam .agents/skills/sdk-seam && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .agents/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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 gridaco/grida --skill sdk-seam -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gridaco/grida sdk-seam --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/sdk-seam .cursor/skills/sdk-seam && 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 "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .cursor/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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/gridaco/grida.git --path .agents/skills/sdk-seam--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 gridaco/grida --skill sdk-seam -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gridaco/grida sdk-seam --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/sdk-seam .gemini/skills/sdk-seam && 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 "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .gemini/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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 gridaco/grida sdk-seamInstalls 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 gridaco/grida --skill sdk-seam -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/sdk-seam .github/skills/sdk-seam && 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 "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .github/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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 gridaco/grida --skill sdk-seam -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gridaco/grida sdk-seam --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/sdk-seam .opencode/skills/sdk-seam && 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 "sdk-seam" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/sdk-seam into .opencode/skills/sdk-seam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdk-seam", 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.
sdk-seamDiscipline for the seam between two SDKs (or two sides of one contract) that the same hand writes.
SDK Seam is an agent skill from gridaco/grida. Discipline for the seam between two SDKs (or two sides of one contract) that the same hand writes. The failure mode: "we own both sides" produces dirty contracts no foreign reviewer would accept. The exercise: pretend the other side is FFI, IPC, or a network protocol you cannot rewrite. Spawn an adversarial subagent profiled as the producer's maintainer; negotiate the change as a feature request, not a PR. Companion to $sdk-design. Language-agnostic — applies to a TS package + its consumer, a Rust crate + its…
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Subagents. It works with Rust and WebAssembly. The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fe26b13. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
SDK Seam loads about 5k tokens when it runs. Until then it costs about 158 tokens; SKILL.md has 2,603 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 gridaco/grida at commit fe26b13, republished under its Apache-2.0 licence (© gridaco). 2,603 words, ~4,971 tokens.
.claude/skills/sdk-seam/SKILL.md (or your agent's skills folder).Companion to
sdk-design. Read that first; its deciding table and disciplines are the foundation this skill builds on. Wheresdk-designis about a single SDK's surface, this skill is about the seam — the joint between two SDKs (or two sides of one contract) — and what it takes to keep that joint clean when the same author writes both sides.
When you control both sides of a boundary, you produce dirty contracts — simply because you can. A field gets added on the producer side because the consumer needs it; the consumer reaches into the producer's internal shape because no public view exposes the slice; a one-off helper crosses the boundary because "we're going to refactor it later." Six months later the contract is unrecoverable, and the two sides can only be deployed together.
The honest test: if we couldn't shotgun-edit both sides at once, this design wouldn't be possible. That's not a virtue. It's a warning.
If the contract had been an IPC channel, an FFI ABI, a network protocol, or a published-versus-consumed package boundary from the start, the design would have been clean from the beginning, and it would have evolved cleanly. Cross-boundary work inside one repo, one workspace, or one mono-language project doesn't get that discipline for free — you have to manufacture it.
This applies to:
packages/grida-* packages where one consumes the other.crates/* crate + a binary that links it; an npm package + a Next.js app).Before editing, restate the work as if you only owned one side.
For every change that crosses a seam, write down:
down_doc to the translate_tangent gesture so absolute-position commits can detect click-no-drag").If you can't fill in (3) credibly, you haven't designed the change — you've just typed the diff.
When the change is non-trivial, delegate the work to a subagent profiled as the producer's maintainer. This is not a review step; it is the actual implementation handoff. The subagent defends, decides, AND ships the producer-side change. The main agent never touches the producer's files.
This is the mechanism that keeps the contract unopinionated and agnostic: the subagent doesn't have your consumer-side context, so it can't be tempted to "just add the field." It has to reason from the producer's own invariants — its README, its tests, its anti-goals — and respond as if it were any other foreign maintainer fielding a feature request from any other consumer.
┌─────────────────────┐ ┌──────────────────────┐
│ Main agent │ │ Subagent │
│ (consumer side) │ │ ("you are the │
│ │ │ maintainer of X") │
│ 1. Writes │ FEEDBACKS.md → │ 3. Reads README + │
│ FEEDBACKS.md │ │ FEEDBACKS.md │
│ 2. Spawns subagent │ │ 4. Defends / accepts│
│ │ │ / counter- │
│ │ │ proposes │
│ │ │ 5. Implements the │
│ │ │ producer change │
│ │ ← decision + │ 6. Writes producer │
│ 7. Reads decision │ diff summary │ tests │
│ 8. Updates │ │ 7. Returns │
│ consumer side │ │ verdict + diff │
│ against the │ │ │
│ SHIPPED contract│ │ │
└─────────────────────┘ └──────────────────────┘The requester writes a self-contained feature request. Name it
whatever fits the workflow — FEEDBACKS.md, REQUEST.md,
<package>/_inbox/<date>-<topic>.md, a GitHub-style issue draft.
The format matters less than the contents.
The artifact MUST contain:
The artifact MUST NOT contain:
Spawn the subagent with a brief that names the producer and its authoritative docs:
You are the maintainer of
[package/crate X]. Your authoritative doctrine is[path/to/X/README.md]and[any AGENTS.md, design docs]. Read those before responding to any feature request.A consumer has filed
[path/to/FEEDBACKS.md]. Process it as you would any external feature request:
- Read the FEEDBACKS.md and the producer's README/AGENTS.md.
- Decide: accept, counter-propose, or refuse.
- Accept: implement the requested shape, possibly with tightened naming or added invariants.
- Counter-propose: implement an alternative shape that solves the same observable problem but fits the producer's design better.
- Refuse: cite the anti-goal or invariant violated, propose how the consumer can absorb the problem differently.
- If accepting or counter-proposing, ship the change: edit the producer's source, add producer-side tests that lock the new contract in producer-only terms (no naming the consumer), update the producer's README/doctrine if the rule generalizes.
- Return a verdict (accept / counter / refuse), a one-paragraph rationale, and a summary of the diff (file paths + what changed). Do NOT touch consumer-side files.
The subagent's tool access should be scoped to the producer's files only — or, if that's not enforceable, the instruction must be unambiguous. Consumer-side files are off-limits for this subagent.
The subagent returns one of three outcomes. The main agent's next move depends on which:
Three things only this flow gets right:
Each outcome produces a cleaner contract than "just add the field because we control the file."
These are language-agnostic. They apply whether the boundary is a TypeScript module export, a Rust trait, a FlatBuffers schema, a JSON-RPC method, or a C ABI.
When the contract has to change, change the contract first, in its own commit (or its own logical unit of work). Ship the producer side with new tests against the new shape. Only after the contract is locked do you update consumers against it.
Anti-pattern: "I added the field and the consumer that needs it in the same hunk." The producer-side test for the field is the consumer's test by accident, and the contract isn't really specified — it's just whatever the consumer happened to need.
Every new field, every new variant, every relaxation of an existing shape — the producer adds a test that pins the new behavior in producer-only terms. "Given input X, the API returns Y with field Z set" — without naming the consumer that asked for it.
A producer test that mentions only the consumer's use case is a contract that breaks when the consumer leaves. The doctrine generalizes the grep-contract idea from $sdk-design: scenario names belong in test text, not consumer references.
If you have two files open from two sides of a boundary and you're editing them in tandem, stop. Either:
This is the boring procedural step that prevents the bad design. The reason seams in foreign systems stay clean is that the deploy boundary forces this sequencing. Manufacture the same sequencing here by hand.
For a Rust crate ↔ WASM binding, this means: change the crate's public function signature, regenerate bindings as a separate step, then update the binding's callers. Not all three in one edit.
A producer that exposes "subscribe to anything" or "raw state" surfaces is one a consumer will inevitably reach into. $sdk-design D1 ("Subscribe to outcomes, not events") is the prevention; this subskill is the discipline when the prevention hasn't fully landed yet.
If the consumer wants something not in the public observation
surface, the consumer files a feature request, doesn't reach.
"There's no public view for [internal field X], so I'll just access
it via the internal property / via reflection / via pub(crate)" is
the moment a contract dies.
The session that produced this skill added a down_doc field to a
gesture struct on one side of a boundary to fix a click-no-drag
mutation on the other. The fix was correct, but the way it landed
was clean only because the procedural steps were followed:
| Step | What happened | If it had gone wrong |
|---|---|---|
| Diagnose | $etiology ladder: symptom is "control moves on bare press." Proximate: absolute-position commit writes pointer position even when pointer didn't move. API contract: absolute vs delta gesture asymmetry. | Skipping the ladder, we'd have added if (dx === 0 && dy === 0) in the consumer — bandaid that leaks. |
| Decide who owns the fix | Producer owns gesture state; the no-drag guard belongs in the producer's commit handler. Field is added to the producer's gesture struct, with doc explaining why it's distinct from existing fields. | We could have written the guard on the consumer side. The next consumer would re-trigger. |
| Lock the contract | New test on the producer side: click-no-drag does NOT emit the commit intent. Producer-only — doesn't name the consumer. | Test on the consumer only — producer could regress silently. |
| Update the doctrine | Spec amendment added a Conformance rule: "Absolute-gesture click-no-drag is mute." Future consumers (other applications of the same producer) inherit the rule for free. | Rule lives in someone's head; the next consumer re-discovers the bug. |
The work that produced these clean outcomes was procedural. None of it required new tooling.
The trap avoided — and that this skill exists to prevent — was the version where, because we controlled both files, we silently muted the commit on the consumer side and moved on. That version would have shipped, the test suite would have stayed green, and the next consumer of the same producer would have re-hit the bug with no breadcrumb back.
<consumer> for <feature>" — the field is leaking the consumer's concern into the contract.index.*, lib.rs's pub use, the schema's public namespace, etc.).Any one of these is a stop-and-reset. Two or more is a redesign signal.
If neither applies, you're inside the boundary and the discipline holds.
$pedantic — when defending a contract change, pedantic probes catch unfalsifiable rationale ("this field will be useful for future flexibility") and leaked-uncertainty ("we might need to extend this later" — quarantine and ship the minimum that's clear).$etiology — most cross-seam bandaids are API-contract bugs (rung 3 of the diagnostic ladder). The temptation to "just patch the consumer" almost always means the producer's contract is the real defect.© gridaco, 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/sdk-seam of gridaco/grida.
Open the folder on GitHubat commit fe26b13
SDK Seam 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 |
|---|---|---|---|---|---|---|
| SDK Seam this skillgridaco/grida | 2.7k | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| Build And Profilingpikax/verter | 113 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Project Healthjezweb/claude-skills | 1.1k | — | ~3k | Automated safety check: Pass | MIT | |
| Archestra Dev Bench Analysisarchestra-ai/archestra | 4.4k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Rust Build Hygienenubjs/nub | 4.4k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Orchestratornubjs/nub | 4.4k | — | ~4.4k | Automated safety check: Pass | MIT |
pikax/verter
Build dependency chains, rebuild sequences, profiling with MCP, and Analysis MCP server setup for Verter
jezweb/claude-skills
All-in-one project configuration and health management. An agent skill from jezweb/claude-skills.
archestra-ai/archestra
Map-reduce a finished archestra-bench run into a Tier-1/Tier-2 improvement report using Claude subagents (same analysis as the Rust analyzer, no API key).
nubjs/nub
Best practices for spinning up nub Rust builds so they are PERFORMANT and CLEAN THEMSELVES UP — the prevention side of the recurring orphaned-build problem on the maintainer's dev host.
nubjs/nub
Drive a multi-part effort to completion by dispatching, steering and verifying sub-agents — one cohesive epic, a batch of decided changes, or a coverage campaign over a population.
pr-pm/prpm
A skill your agent uses when creating Zed extensions with custom slash commands, language support, themes, or MCP servers - provides Rust/WASM extension structure, slash command API…
gridaco/grida
Grida Desktop Electron shell and release-impact work: BrowserWindow, preload, window.grida, menus, protocol/deep links, file associations, Forge, path-scoped bridge security, Electron-only UI bugs…
gridaco/grida
Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
gridaco/grida
Set up, download, verify, and seed the optional Grida Library developer corpus into local Supabase.
gridaco/grida
Query images with a local Ollama vision model without loading the image into the main agent context.
gridaco/grida
Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers.
gridaco/grida
Grida AI agent system work: @grida/daemon (DaemonServer, loopback HTTP perimeter, files/workspaces, secrets store, daemon discovery) and @grida/agent (the agent tenant: sessions, providers/BYOK…
Works with
Categories
Discipline for the seam between two SDKs (or two sides of one contract) that the same hand writes. SDK Seam is an agent skill from gridaco/grida. Discipline for the seam between two SDKs (or two sides of one contract) that the same hand writes.
SDK Seam fits situations like: tasks that involve Subagents.
Run `npx skills add gridaco/grida --skill sdk-seam -a claude-code`. Or copy the skill folder (.agents/skills/sdk-seam in gridaco/grida) into .claude/skills/sdk-seam in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gridaco/grida --skill sdk-seam -a codex`. Or copy the skill folder (.agents/skills/sdk-seam in gridaco/grida) into .agents/skills/sdk-seam 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 gridaco/grida --skill sdk-seam -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sdk-seam, .gemini/skills/sdk-seam, .github/skills/sdk-seam and .opencode/skills/sdk-seam in your project.
SKILL.md names no scripts, command-line tools or credentials: SDK Seam is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
SDK Seam 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 5k tokens (SKILL.md is roughly 20k 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 SDK Seam: Build And Profiling (pikax/verter, 113 stars), Project Health (jezweb/claude-skills, 1.1k stars), Archestra Dev Bench Analysis (archestra-ai/archestra, 4.4k stars) and Rust Build Hygiene (nubjs/nub, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gridaco (a GitHub organization) maintains it in gridaco/grida, which has 2,659 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 8, 2026.
Source: gridaco/grida on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.