ink-dev Workflow

VerifiedSafe

Follow the standard contributor workflow for the ink 2D rendering library: branching, local validation, PR, and CI conventions.

Sby Skills Guide Bot
DevelopmentIntermediate
7/24/2026
Claude CodeCursorCodex
#git-workflow#pull-requests#cpp#ci-cd#code-formatting

Recommended for

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
When to use it

Use it when starting a feature, bugfix, or refactor in ink, or when preparing a pull request against master.

When not to use it

Skip it for general C++ design or language-pattern questions unrelated to repository workflow, or when driving a stable release.

Security analysis

Safe
Quality score90/100

The 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 made

Examples

Nouvelle fonctionnalité avec PR
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.
Vérification avant push
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?
Préparer la release readiness
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 master as 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

  1. Create branch from latest master:

    git switch master
    git pull
    git switch -c feat/<name>
    
  2. Commit with conventional prefixes:

    • <type>: <concise description>
    • Types: feat, fix, refactor, test, docs, chore, ci
  3. Update README.md when API/behavior/build/release workflow changed.

  4. 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
    
  5. 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
    )"
    
  6. Wait for CI checks before merge.

  7. 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 in src/.
  • GPU renderer sources live in src/gpu/<api>/.
  • New features include tests in tests/ (typically test_<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.txt accordingly.

Common Mistakes

  • Skipping local ctest and relying only on CI feedback.
  • Skipping clang-format check 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.hpp or 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 files

This 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.md

From 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
AreaCurrent convention
Target branchmaster
CI triggerPR to master, push to master
CI checksFormat, Build & Test (gcc/clang x Debug/Release), clang-tidy, Sanitizers
Nightly triggerschedule/manual in nightly.yml on default branch
Stable release triggerpush tag v*
Release outputsCPU 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 installation
openskills 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 sync

Manual 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.

Related skills