Dce Edge
vercel/next.js
DCE-safe require() patterns and edge runtime constraints. An agent skill from vercel/next.js.
Promote provider-specific relationships to a canonical cross-provider ontology edge using the WORKLOADPARENT pattern (a parallel CartographyRelSchema with the canonical rellabel, the old edge kept…
$ npx skills add cartography-cncf/cartography --skill promote-ontology-relationship -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cartography-cncf/cartography promote-ontology-relationship --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/cartography-cncf/cartography.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .claude/skills/promote-ontology-relationship && 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 "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .claude/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationshipType 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 cartography-cncf/cartography --skill promote-ontology-relationship -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cartography-cncf/cartography promote-ontology-relationship --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cartography-cncf/cartography.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .agents/skills/promote-ontology-relationship && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .agents/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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 cartography-cncf/cartography --skill promote-ontology-relationship -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cartography-cncf/cartography promote-ontology-relationship --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cartography-cncf/cartography.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .cursor/skills/promote-ontology-relationship && 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 "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .cursor/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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/cartography-cncf/cartography.git --path .agents/skills/promote-ontology-relationship--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 cartography-cncf/cartography --skill promote-ontology-relationship -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cartography-cncf/cartography promote-ontology-relationship --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cartography-cncf/cartography.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .gemini/skills/promote-ontology-relationship && 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 "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .gemini/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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 cartography-cncf/cartography promote-ontology-relationshipInstalls 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 cartography-cncf/cartography --skill promote-ontology-relationship -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cartography-cncf/cartography.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .github/skills/promote-ontology-relationship && 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 "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .github/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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 cartography-cncf/cartography --skill promote-ontology-relationship -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cartography-cncf/cartography promote-ontology-relationship --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cartography-cncf/cartography.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/promote-ontology-relationship .opencode/skills/promote-ontology-relationship && 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 "promote-ontology-relationship" agent skill from https://github.com/cartography-cncf/cartography/tree/master/.agents/skills/promote-ontology-relationship into .opencode/skills/promote-ontology-relationship/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "promote-ontology-relationship", 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.
promote-ontology-relationshipPromote provider-specific relationships to a canonical cross-provider ontology edge using the WORKLOADPARENT pattern (a parallel CartographyRelSchema with the canonical rellabel, the old edge kept…
Promote Ontology Relationship is an agent skill from cartography-cncf/cartography. Promote provider-specific relationships to a canonical cross-provider ontology edge using the WORKLOADPARENT pattern (a parallel CartographyRelSchema with the canonical rellabel, the old edge kept and deprecated, plus a RelConstraint enforced by the CI guard). Use when the user asks to "propagate X-Y relationship to the ontology level", unify/normalise a relationship label across providers, add a canonical ontology edge (HASROLE, MEMBEROF, ASSUMES, ENCRYPTEDBY, POINTSTO, ...), add a RelConstraint, or…
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/worked-example.md`).
The repository describes itself as: Cartography is a Python tool that pulls infrastructure assets and their relationships into a Neo4j graph database. The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0975e95. 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:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, 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.
Promote Ontology Relationship loads about 3.6k tokens when it runs, and up to ~4.9k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 1,584 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 cartography-cncf/cartography at commit 0975e95, republished under its Apache-2.0 licence (© cartography-cncf). 1,584 words, ~3,588 tokens.
.claude/skills/promote-ontology-relationship/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Cartography normalises cross-provider edges between two ontology-labelled nodes (semantic labels like UserAccount, PermissionRole, ServiceAccount, ComputePod, or abstract nodes like User, Device) under a single canonical relationship label. The canonical label is declared as a RelConstraint and enforced by a CI guard.
There are two cases. (A) A direct provider edge already exists between the two ontology-labelled nodes: promote it in place, following the WORKLOAD_PARENT precedent (PRs #2735 / #2738): add a parallel canonical edge, keep the old one deprecated for backward compatibility, and add a constraint. This promotion is NOT done with analysis/linking jobs. (B) No direct edge exists yet (the relationship only lives through a binding node, or in another sync's data, or not at all): you must create the canonical edge, choosing the cheapest mechanism that fits (see When no direct edge exists). In both cases the canonical label is still declared as a RelConstraint and enforced by the guard.
For each existing direct CartographyRelSchema edge that connects two ontology-labelled nodes:
rel_label = "<CANONICAL>", same target_node_label / matcher / direction as the existing edge, and register it in the node schema's other_relationships (both edges MERGE on every sync).# DEPRECATED: replaced by <CANONICAL>, will be removed in v1.0.0, and add its rel class to LEGACY_REL_WHITELIST in constraints.py.RelConstraint(src, dst, label) to ONTOLOGY_REL_CONSTRAINTS so the guard enforces the canonical label + direction whenever both endpoints carry the listed ontology labels.If a provider already uses the chosen canonical label, that edge is already compliant: leave it untouched (no parallel, no deprecation).
Sometimes a constrained pair has no direct provider edge to promote: the relationship only exists through a binding node (AWSInstanceProfile, AzureRoleAssignment), or the two endpoints are created in different syncs, or the data simply is not modelled yet. The constraint still belongs in constraints.py (it never requires the edge to exist), but to actually populate the edge you create it. Pick the cheapest mechanism that fits, in this strict priority order:
Classic CartographyRelSchema (preferred). Use when the source node's own payload already carries the target's identifier (e.g. an AWS Lambda payload holds its execution-role arn, an API-key payload holds its owner id). Add a normal rel class on the source schema pointing at the target label, with the canonical rel_label. This is just Step 4 without a deprecated sibling. Use the add-relationship skill for the mechanics.
MatchLink — always prefer this over an analysis job. Use when the two endpoints are created in different syncs, or the relationship is only derivable by resolving a binding node, so neither schema's payload can express it directly (e.g. AWSEC2Instance -[:ASSUMES]-> AWSRole resolved through the instance profile in the IAM sync; AzureVirtualMachine -[:ASSUMES]-> AzureRoleDefinition joined on the managed-identity principalId via AzureRoleAssignment). Assemble the (source_key, target_key) pairs in the owning sync and load them with load_matchlinks / a MatchLink schema carrying the canonical rel_label. The guard reads a MatchLink's direction + label too, so the canonical name is enforced. Use the add-relationship skill for MatchLink mechanics.
Analysis job (last resort). Only when the edge is purely transitive and the join genuinely cannot be assembled inside a single sync, so it must be computed post-sync by traversing the whole graph (e.g. deriving GCPInstance -[:ASSUMES]-> GCPRole across RUNS_AS + HAS_ROLE, where the compute sync and the IAM-policy-binding sync each hold only half the path). Add a Cypher analysis job (see the analysis-jobs skill) that MERGEs the canonical edge. If you reach for this, first re-confirm a MatchLink really cannot assemble the pairs; an analysis job is harder to test and to keep idempotent.
Whichever you pick, the canonical label/direction must match the RelConstraint, and the edge gets the same docs + integration-test treatment as a promoted edge. Edges through binding nodes are still not "direct" for the purposes of Step 3 — they are gaps, handled here.
label + declarative extra_node_labels, including labels with conditions), not from the runtime graph. An edge is only constrained when both endpoints carry an ontology label in their schema. Edges through intermediate binding nodes (e.g. GCPPolicyBinding, KubernetesRoleBinding, AzureRoleAssignment) are NOT direct and are not affected by a rename.UserAccount -> PermissionRole), which spans many providers. Prefer a neutral verb (HAS_ROLE, not ASSUME_ROLE, when the target generalises IAM roles, permission sets, and SaaS roles). Reserve action verbs (ASSUMES) for workload-identity/runtime semantics.test_ontology_rel_constraints.py will list every offending rel (wrong label or reverse direction). Decide per edge: migrate (parallel + deprecate) or whitelist (distinct semantic).schema.md. Module and ontology schema pages are built from the data model. The canonical edge reaches the ontology page through constraints.py and the model. The generator has no deprecation marker, so a relationship still declared in the model is still rendered. Update model docstrings and descriptions that name the old label, then build the docs to check the result.--signoff. No internal ticket or client references in committed text.Decide the abstract pair and verb, e.g. UserAccount -[:HAS_ROLE]-> PermissionRole. Confirm the chosen verb is not already overloaded by a different concept (grep the canonical label across the repo).
The semantic label is applied via an exported uppercase ExtraNodeLabel
constant on the node schema, sometimes composed conditionally with
CONSTANT.when(field="value"). Ontology constants have
kind=LabelKind.ONTOLOGY. The ontology mapping files under
cartography/models/ontology/mapping/data/<category>.py list which provider
node labels belong to a category. Build the set of node labels carrying src
and dst.
# which schemas declare the semantic labels
grep -rln '"PermissionRole"' cartography/models/ | grep -v ontology/mapping
grep -rln '"UserAccount"' cartography/models/ | grep -v ontology/mappingFor each dst node label, find CartographyRelSchema classes whose target_node_label is that label (or rels defined on the dst schema pointing back at a src node). A direct edge is one whose other endpoint also carries an ontology label. Edges through binding/intermediate nodes are out of scope (they are not direct).
grep -rn "target_node_label.*<RoleNodeLabel>" cartography/models/Classify each direct edge:
In the provider model file, add a Properties + Rel class mirroring the existing one but with the canonical rel_label, and register it in other_relationships. Mark the old rel deprecated. Example (AWS SSO user -> permission set):
@dataclass(frozen=True)
# DEPRECATED: replaced by the canonical (:UserAccount)-[:HAS_ROLE]->(:PermissionRole)
# edge (AWSSSOUserToPermissionSetHasRoleRel). Kept for backward compatibility,
# will be removed in v1.0.0.
class AWSSSOUserToPermissionSetRel(CartographyRelSchema):
target_node_label: str = "AWSPermissionSet"
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
{"arn": PropertyRef("AssignedPermissionSets", one_to_many=True)},
)
direction: LinkDirection = LinkDirection.OUTWARD
rel_label: str = "HAS_PERMISSION_SET"
properties: AWSSSOUserToPermissionSetRelProperties = AWSSSOUserToPermissionSetRelProperties()
@dataclass(frozen=True)
class AWSSSOUserToPermissionSetHasRoleRelProperties(CartographyRelProperties):
lastupdated: PropertyRef = PropertyRef("lastupdated", set_in_kwargs=True)
@dataclass(frozen=True)
# Canonical ontology edge: (:UserAccount)-[:HAS_ROLE]->(:PermissionRole)
class AWSSSOUserToPermissionSetHasRoleRel(CartographyRelSchema):
target_node_label: str = "AWSPermissionSet"
target_node_matcher: TargetNodeMatcher = make_target_node_matcher(
{"arn": PropertyRef("AssignedPermissionSets", one_to_many=True)},
)
direction: LinkDirection = LinkDirection.OUTWARD
rel_label: str = "HAS_ROLE"
properties: AWSSSOUserToPermissionSetHasRoleRelProperties = AWSSSOUserToPermissionSetHasRoleRelProperties()Then add AWSSSOUserToPermissionSetHasRoleRel() to the node schema's OtherRelationships([...]).
For edges created in a hand-written query (not a schema rel), add a parallel MERGE of the canonical edge next to the existing one, keeping both.
In cartography/models/ontology/constraints.py, append to ONTOLOGY_REL_CONSTRAINTS:
# A user account is granted a role.
RelConstraint(src="UserAccount", dst="PermissionRole", label="HAS_ROLE"),A constraint with no current direct edge is valid governance ("never requires the edge to exist; only constrains the name when both endpoints carry the labels").
uv run pytest tests/unit/cartography/graph/test_ontology_rel_constraints.py -qThe guard lists violations as either wrong label (canonical direction) or wrong direction (reverse). For each:
LEGACY_REL_WHITELIST with a # DEPRECATED: replaced by <CANONICAL> comment.LEGACY_REL_WHITELIST with a comment explaining why it is distinct (e.g. ALLOWED_BY = "role is assumable by", MAPS_TO = identity federation, ASSUMED_ROLE_WITH_SAML = runtime event, ASSUMES_ROLE = workload identity / IRSA).Re-run until green. Add the needed imports to constraints.py (isort will order them).
Module and ontology schema.md pages are generated from the data model at docs build time. Do not create, hand-edit, or commit them.
PropertyRef descriptions that still name the old label.constraints.py.(DEPRECATED: ...).uv run ./docs/build.sh and check the generated module and ontology pages.Grep the old label across cartography/ (intel, data/jobs/, rules/). Any analysis/intel query that traverses the old label should be switched to the canonical one (both exist now). Confirm no rule depends on the old label.
grep -rn "OLD_LABEL" cartography/intel cartography/data/jobs cartography/rulesAdd additive assertions in the affected integration tests (assert the new canonical edge; keep the old assertion only if you still assert the deprecated edge intentionally).
uv run pytest tests/unit/cartography/graph/test_ontology_rel_constraints.py -q
uv run pytest tests/integration/cartography/intel/<provider>/ -q # needs Neo4j
uv run --frozen pre-commit run --files <changed files>references/worked-example.md: the full HAS_ROLE migration: every file touched, the collisions the guard surfaced, and how each was resolved.add-relationship: base CartographyRelSchema / MatchLink mechanics.enrich-ontology: applying the semantic labels (extra_node_labels, _ont_*) that this skill's constraints operate on.analysis-jobs: when an edge must be derived after sync rather than declared on a schema.© cartography-cncf, 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
SKILL.md and 1 other file (references) in .agents/skills/promote-ontology-relationship of cartography-cncf/cartography.
Open the folder on GitHubat commit 0975e95
Promote Ontology Relationship 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 |
|---|---|---|---|---|---|---|
| Promote Ontology Relationship this skillcartography-cncf/cartography | 4.1k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Dce Edgevercel/next.js | 143k | — | ~1k | Automated safety check: Pass | MIT | |
| Promotealirezarezvani/claude-skills | 28k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Add Model Provideropenclaw/openclaw | 392k | — | ~1.1k | Automated safety check: Pass | MIT | |
| OmniRoute Provider Managementdiegosouzapw/OmniRoute | 75k | — | ~2.4k | Automated safety check: Pass | MIT | |
| OmniRoute Providers CLIdiegosouzapw/OmniRoute | 75k | — | ~2.2k | Automated safety check: Pass | MIT |
vercel/next.js
DCE-safe require() patterns and edge runtime constraints. An agent skill from vercel/next.js.
alirezarezvani/claude-skills
Graduate a proven pattern from auto-memory (MEMORY.md) to CLAUDE.md or .claude/rules/ for permanent enforcement.
openclaw/openclaw
Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.
diegosouzapw/OmniRoute
Manages AI provider connections, API keys, OAuth flows and connection tests through OmniRoute's REST API across its 327-provider catalog.
diegosouzapw/OmniRoute
Command reference for managing provider connections in the omniroute gateway: browse the catalog, test and validate connections, rotate API keys and read per-provider metrics.
wshobson/agents
Gate fine-tuned checkpoints with drift budgets, paired comparison, and forgetting checks before promotion.
cartography-cncf/cartography
Define a new node schema under cartography/models/MODULENAME/, including required properties, sub-resource relationships, extra labels, conditional labels, scoped cleanup, and one-to-many transforms.
cartography-cncf/cartography
Define a CartographyRelSchema (standard relationship), one-to-many edge, or MatchLink connecting existing nodes.
cartography-cncf/cartography
Add a post-ingestion typed analysis job to a Cartography module to enrich the graph after sync.
cartography-cncf/cartography
Author a new Cartography intel module end-to-end (entry point, sync GET/TRANSFORM/LOAD/CLEANUP, declarative data model, integration test, schema docs).
cartography-cncf/cartography
Author a Cartography security rule (one or more Cypher Facts plus a Pydantic Finding output model) under cartography/rules/data/rules/.
cartography-cncf/cartography
Map a Cartography node into the Ontology system using semantic labels (UserAccount, DeviceInstance, Tenant, Database, ObjectStorage, FileStorage) or canonical nodes (User, Device).
Promote provider-specific relationships to a canonical cross-provider ontology edge using the WORKLOADPARENT pattern (a parallel CartographyRelSchema with the canonical rellabel, the old edge kept…. Promote Ontology Relationship is an agent skill from cartography-cncf/cartography. Promote provider-specific relationships to a canonical cross-provider ontology edge using the WORKLOADPARENT pattern (a parallel CartographyRelSchema with the canonical rellabel, the old edge kept and deprecated, plus a RelConstraint enforced by the CI guard).
Promote Ontology Relationship fits situations like: the user asks to propagate X-Y relationship to the ontology level; unify/normalise a relationship label across providers; add a canonical ontology edge (HASROLE; add a RelConstraint.
Run `npx skills add cartography-cncf/cartography --skill promote-ontology-relationship -a claude-code`. Or copy the skill folder (.agents/skills/promote-ontology-relationship in cartography-cncf/cartography) into .claude/skills/promote-ontology-relationship in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cartography-cncf/cartography --skill promote-ontology-relationship -a codex`. Or copy the skill folder (.agents/skills/promote-ontology-relationship in cartography-cncf/cartography) into .agents/skills/promote-ontology-relationship 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 cartography-cncf/cartography --skill promote-ontology-relationship -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/promote-ontology-relationship, .gemini/skills/promote-ontology-relationship, .github/skills/promote-ontology-relationship and .opencode/skills/promote-ontology-relationship in your project.
Going by SKILL.md and its folder, Promote Ontology Relationship needs the command-line tools its instructions call (uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, 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.
Promote Ontology Relationship 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 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Promote Ontology Relationship: Dce Edge (vercel/next.js, 143k stars), Promote (alirezarezvani/claude-skills, 28k stars), Add Model Provider (openclaw/openclaw, 392k stars) and OmniRoute Provider Management (diegosouzapw/OmniRoute, 75k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cartography-cncf (a GitHub organization) maintains it in cartography-cncf/cartography, which has 4,129 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 11, 2026.
Source: cartography-cncf/cartography on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.