Automated summary
This skill captures the contributor workflow specific to the ink 2D rendering library repository: branching, local validation, pull requests, and CI conventions.
Strengths
- Spells out branch prefixes (feat/, fix/, refactor/, docs/, chore/) and conventional commit types
- Gives exact local validation commands (clang-format --dry-run, CMake build with tests, ctest) that mirror CI
- Includes a quick-reference table of CI, nightly, and stable release triggers plus a PR body template with a test plan
- Calls out repo-specific traps: forgetting to sync ink.hpp, CMakeLists.txt, or README
Limitations
- Tied to the ink repository — commands and conventions do not transfer to other projects
- Assumes a toolchain is already installed (gh CLI, CMake, clang-format, Google Test) and does not cover setup
- Release policy (gates, hotfixes) is delegated to the ink-release skill and not described here
Use it when starting a feature, bugfix, or refactor in ink, or when preparing a pull request against master.
Skip it for general C++ design or language-pattern questions unrelated to repository workflow, or when driving a stable release.
Security analysis
SafeThe skill provides standard repository contribution instructions using git, cmake, ctest, clang-format, and gh. Commands are non-destructive and intended for the developer's own workflow; no exfiltration, obfuscation, or unsafe shell patterns are present.
No concerns found
How this analysis is madeExamples
Create a feat/ branch off latest master for adding a new gradient fill API to ink, implement it with tests in tests/, run the clang-format check and ctest locally, then open a PR to master with the standard summary and test plan.I've added a new public header include/ink/blend.hpp — what else do I need to update in ink.hpp and CMakeLists.txt, and which local commands should I run before pushing?Walk me through the ink branch and commit conventions and the CI checks my PR must pass so the code is ready for the release readiness gates.name: ink-dev description: Use when contributing code to ink and needing repository-specific branching, local validation, PR, and CI conventions. allowed-tools: Bash Read Edit Write Grep Glob
ink-dev
Overview
Use this skill to follow the standard contributor workflow for the ink 2D rendering library.
Related: Use ink-release for nightly/stable release policy, gates, and hotfix handling.
This repository uses a PR-first flow even for solo development: work on branch, open PR, merge to master.
When to Use
Use when:
- starting a feature, bugfix, or refactor in this repo
- preparing a pull request to
master - checking what local commands to run before push
- preparing code for release readiness checks
Do not use when you need language-level coding patterns unrelated to repository workflow.
Branch Strategy
- Treat
masteras protected; use PRs instead of direct pushes. - Feature branch:
feat/<short-description> - Bugfix branch:
fix/<short-description> - Refactor branch:
refactor/<short-description> - Docs branch:
docs/<short-description> - Chore/CI branch:
chore/<short-description> - Do not commit feature work directly on
master.
Development Cycle
-
Create branch from latest
master:git switch master git pull git switch -c feat/<name> -
Commit with conventional prefixes:
<type>: <concise description>- Types:
feat,fix,refactor,test,docs,chore,ci
-
Update
README.mdwhen API/behavior/build/release workflow changed. -
Run local validation before push:
# Format check (matches CI) find include src -name '*.hpp' -o -name '*.cpp' | xargs clang-format --dry-run -Werror # Build + test cmake -B build -DINK_BUILD_TESTS=ON -DINK_ENABLE_GL=OFF cmake --build build -j$(nproc) ctest --test-dir build --output-on-failure -
Push branch and open PR to
master:git push -u origin feat/<name> gh pr create --base master --title "<type>: <description>" --body "$(cat <<'EOF' ## Summary - <what changed and why> ## Test plan - [ ] Local `ctest` passes - [ ] Format check passes EOF )" -
Wait for CI checks before merge.
-
Merge via GitHub (squash merge is the default convention).
Quick Reference
| Area | Current convention |
|------|--------------------|
| Target branch | master |
| CI trigger | PR to master, push to master |
| CI checks | Format, Build & Test (gcc/clang x Debug/Release), clang-tidy, Sanitizers |
| Nightly trigger | schedule/manual in nightly.yml on default branch |
| Stable release trigger | push tag v* |
| Release outputs | CPU tarball, GL tarball, source tarball, GitHub Release notes |
Code Conventions
- C++17 with strict warnings (
-Wall -Wextra -Wpedantic). - Public headers live in
include/ink/; implementation insrc/. - GPU renderer sources live in
src/gpu/<api>/. - New features include tests in
tests/(typicallytest_<component>.cpp). - Tests use Google Test (
TEST,EXPECT_EQ, and related assertions). - When adding/removing a public header, keep
include/ink/ink.hpp(umbrella header) in sync. - When adding/removing source files, update
CMakeLists.txtaccordingly.
Common Mistakes
- Skipping local
ctestand relying only on CI feedback. - Skipping
clang-formatcheck locally — CI will reject unformatted code. - Forgetting README updates when public behavior or usage changes.
- Using vague commit titles instead of typed prefixes.
- Adding a public header but forgetting to include it in
ink.hppor the CMake install list. - Pushing release tags before the changelog PR is merged and release preflight passes.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/ink-dev-workflow-mryiqgzp' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ink-dev-workflow-mryiqgzp/download' --output '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md.part' && mv '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md.part' '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Bash Read Edit Write Grep Glob
Original excerpt: Quick Reference
| Area | Current convention |
|---|---|
| Target branch | master |
| CI trigger | PR to master, push to master |
| CI checks | Format, Build & Test (gcc/clang x Debug/Release), clang-tidy, Sanitizers |
| Nightly trigger | schedule/manual in nightly.yml on default branch |
| Stable release trigger | push tag v* |
| Release outputs | CPU tarball, GL tarball, source tarball, GitHub Release notes |
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && test -s '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ink-dev' && cp -R '.skill-downloads/ink-dev-workflow-mryiqgzp' '.claude/skills/ink-dev'Cursor
test -f '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && test -s '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/ink-dev' && cp -R '.skill-downloads/ink-dev-workflow-mryiqgzp' '.cursor/skills/ink-dev'Codex
test -f '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && test -s '.skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/ink-dev' && cp -R '.skill-downloads/ink-dev-workflow-mryiqgzp' '.agents/skills/ink-dev'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/ink-dev-workflow-mryiqgzp'openskills read 'ink-dev-workflow-mryiqgzp'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/ink-dev-workflow-mryiqgzp/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.