#805 by GitHub stars

chrisbanes/skills

Skills for Kotlin, Jetpack Compose, and Android development

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/android-benchmark-comparison/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/changelog/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → d83f6e289a07

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-animations/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-component-design/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-focus-navigation/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-performance/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-state-and-effects/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-ui-testing-patterns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/deliver-spec/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

A local comparison is unavailable. You can inspect the recorded versions on GitHub.

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/gradle-run/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/grounded-writing/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/implement-with-subagents/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/kotlin-api-design/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/kotlin-concurrency-and-flow/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/kotlin-control-flow/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Instructions only

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/release-kotlin-library/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

183cfc9bf112 → d83f6e289a07

A local comparison is unavailable. You can inspect the recorded versions on GitHub.

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/run-github-project/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/shepherd/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/to-plan/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

skills/using-chrisbanes-skills/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

183cfc9bf112 → d83f6e289a07

A local comparison is unavailable. You can inspect the recorded versions on GitHub.

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → 183cfc9bf112

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit d83f6e289a07a55026e610c797672f22eff3f022

git clone --filter=blob:none --no-checkout https://github.com/chrisbanes/skills.git .hotskills/chrisbanes-skills && git -C .hotskills/chrisbanes-skills checkout --detach d83f6e289a07a55026e610c797672f22eff3f022 # Copy each selected skill directory from .hotskills/chrisbanes-skills into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/chrisbanes/skills.git .hotskills/chrisbanes-skills && git -C .hotskills/chrisbanes-skills checkout --detach d83f6e289a07a55026e610c797672f22eff3f022 # Copy each selected skill directory from .hotskills/chrisbanes-skills into .agents/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/chrisbanes/skills.git .hotskills/chrisbanes-skills && git -C .hotskills/chrisbanes-skills checkout --detach d83f6e289a07a55026e610c797672f22eff3f022 # Copy each selected skill directory from .hotskills/chrisbanes-skills into .opencode/skills/<skill-name>/
1.1kGitHub stars
5stars in 7 days
20skills in this repository
53commits in 30 days

Heat

4.2
  • Star growth, last 7 daysAhead of 71% of tracked repositories
  • Star growth, last 24 hoursAhead of 3% of tracked repositories
  • Rank movement, last 7 daysAhead of 17% of tracked repositories
  • Commits, last 30 daysAhead of 90% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Jul 31, 2026Nov 5, 20261,139

Individual skills in this repository

How it works

android-benchmark-comparison

When your agent uses it

Use when comparing physical Android benchmark configurations, investigating inconsistent rankings, or selecting an Android default from measured results. Do not use for code-level Compose performance diagnosis without a configuration comparison.

What it loads into context

Frontmatter

45 tokens

Always available to the agent

SKILL.md

749 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Core principle
  2. Procedure
  3. Boundaries

Files

  • ../../.claude-plugin/marketplace.jsonasset194 bytes
  • ../../.claude-plugin/plugin.jsonasset333 bytes
  • SKILL.mdcore4,013 bytes
Read SKILL.md

# Android benchmark comparison

## Core principle

Treat a physical Android configuration comparison as a reproducible experiment:
verify comparable workloads and device conditions before interpreting a ranking
or choosing a default.

## Procedure

1. State the decision, configurations, workloads, metric definitions, and
   repetitions. Preserve exact build identity, configuration, raw results, and
   traces; then verify every intended case and iteration ran. Distinguish
   missing, failed, and excluded runs; do not compare only the fastest
View the complete source on GitHub

Skills included

  • android-benchmark-comparison
  • changelog
  • compose-animations
  • compose-component-design
  • compose-focus-navigation
  • compose-performance
  • compose-state-and-effects
  • compose-ui-testing-patterns
  • deliver-spec
  • gradle-run
  • grounded-writing
  • implement-with-subagents
  • kotlin-api-design
  • kotlin-concurrency-and-flow
  • kotlin-control-flow
  • release-kotlin-library
  • run-github-project
  • shepherd
  • to-plan
  • using-chrisbanes-skills

Repository facts

License
Apache-2.0
Created
May 12, 2026
Last pushed
Nov 5, 2026
Forks
58
Open issues
1
Project activity
Active

Rank over the last 12 weeks

Now #805 · best #575 · down 113 in 30 days

  1. #787 from Oct 28 to Oct 29
  2. #790 on Oct 30
  3. #792 from Oct 31 to Nov 1
  4. #797 on Nov 2
  5. #800 on Nov 3
  6. #805 since Nov 4
72 earlier periods
  1. #666 on Aug 1
  2. #582 on Aug 7
  3. #574 on Aug 8
  4. #579 on Aug 9
  5. #605 on Aug 10
  6. #607 on Aug 11
  7. #608 on Aug 12
  8. #612 on Aug 13
  9. #607 on Aug 14
  10. #592 on Aug 15
  11. #603 on Aug 16
  12. #606 on Aug 17
  13. #621 on Aug 18
  14. #598 on Aug 19
  15. #594 on Aug 20
  16. #601 on Aug 21
  17. #575 on Aug 22
  18. #602 on Aug 23
  19. #604 on Aug 24
  20. #614 on Aug 25
  21. #600 on Aug 26
  22. #608 on Aug 27
  23. #625 on Aug 28
  24. #583 on Aug 29
  25. #584 on Aug 30
  26. #606 on Aug 31
  27. #622 on Sep 1
  28. #609 on Sep 2
  29. #593 on Sep 4
  30. #592 on Sep 5
  31. #601 on Sep 6
  32. #608 on Sep 7
  33. #624 on Sep 8
  34. #623 on Sep 10
  35. #605 on Sep 11
  36. #609 on Sep 12
  37. #608 on Sep 13
  38. #629 on Sep 14
  39. #632 on Sep 17
  40. #634 on Sep 18
  41. #643 on Sep 21
  42. #655 on Sep 22
  43. #650 on Sep 23
  44. #624 on Sep 24
  45. #619 on Sep 25
  46. #615 on Sep 26
  47. #638 on Sep 27
  48. #644 on Sep 28
  49. #680 on Sep 29
  50. #661 on Sep 30
  51. #631 on Oct 1
  52. #640 on Oct 2
  53. #618 on Oct 3
  54. #640 on Oct 4
  55. #642 on Oct 5
  56. #650 on Oct 6
  57. #658 on Oct 7
  58. #692 on Oct 8
  59. #673 on Oct 9
  60. #658 on Oct 10
  61. #673 on Oct 13
  62. #688 on Oct 14
  63. #674 on Oct 15
  64. #686 on Oct 16
  65. #664 on Oct 17
  66. #656 on Oct 18
  67. #693 on Oct 19
  68. #702 on Oct 20
  69. #708 on Oct 21
  70. #688 on Oct 22
  71. #667 on Oct 24
  72. #773 on Oct 25

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 3, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 24 notes
  • skills/compose-performance/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/deliver-spec/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/deliver-spec/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/deliver-spec/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/deliver-spec/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/gradle-run/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/grounded-writing/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/run-github-project/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/shepherd/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/to-plan/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/to-plan/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/to-plan/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 210 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "Chris Banes",     "url": "https://github.com/chrisbanes"
  • Network accessline 4
    "name": "Chris Banes",     "url": "https://github.com/chrisbanes"   },
  • Network accessline 5
    "url": "https://github.com/chrisbanes"

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Chris Banes",     "url": "https://github.com/chrisbanes"
  • Network accessline 6
    "name": "Chris Banes",     "url": "https://github.com/chrisbanes"   },
  • Network accessline 7
    "url": "https://github.com/chrisbanes"
  • Network accessline 8
    },   "repository": "https://github.com/chrisbanes/skills",   "license": "Apache-2.0"
  • Network accessline 9
    "repository": "https://github.com/chrisbanes/skills",

skills/changelog/SKILL.md

  • Network accessline 44
    4. Verify links and attribution. For each PR-supported change, link its number    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where
  • Network accessline 44
    4. Verify links and attribution. For each PR-supported change, link its number    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where
  • Network accessline 44
    4. Verify links and attribution. For each PR-supported change, link its number    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where
  • Network accessline 45
    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where    appropriate using explicit Markdown URLs; bare numbers are insufficient.
  • Network accessline 45
    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where    appropriate using explicit Markdown URLs; bare numbers are insufficient.
  • Network accessline 45
    directly to the canonical pull URL, for example    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where    appropriate using explicit Markdown URLs; bare numbers are insufficient.
  • Network accessline 46
    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where
  • Network accessline 46
    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where
  • Network accessline 46
    `[#123](https://github.com/OWNER/REPO/pull/123)`. Link matching issues where

skills/compose-animations/SKILL.md

  • Network accessline 34
    | Need | Prefer | |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 34
    | Need | Prefer | |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 34
    | Need | Prefer | |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 35
    |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) | | One value follows state | `animate*AsState` |
  • Network accessline 35
    |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) | | One value follows state | `animate*AsState` |
  • Network accessline 35
    |---|---| | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) | | One value follows state | `animate*AsState` |
  • Network accessline 36
    | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 36
    | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 36
    | Show/hide a subtree with enter/exit semantics | [`AnimatedVisibility`](https://developer.android.com/develop/ui/compose/animation/composables-modifiers#animatedvisibility) |
  • Network accessline 39
    | Child size changes | `Modifier.animateContentSize()` | | Different composable trees fill one region | `AnimatedContent`, or `Crossfade` for the simple case | | Drag, fling, interruption, or imperative control | [`Animatable`](https://deve
  • Network accessline 39
    | Child size changes | `Modifier.animateContentSize()` | | Different composable trees fill one region | `AnimatedContent`, or `Crossfade` for the simple case | | Drag, fling, interruption, or imperative control | [`Animatable`](https://deve
  • Network accessline 39
    | Child size changes | `Modifier.animateContentSize()` | | Different composable trees fill one region | `AnimatedContent`, or `Crossfade` for the simple case | | Drag, fling, interruption, or imperative control | [`Animatable`](https://deve
  • Network accessline 41
    | Drag, fling, interruption, or imperative control | [`Animatable`](https://developer.android.com/reference/kotlin/androidx/compose/animation/core/Animatable) |
  • Network accessline 41
    | Drag, fling, interruption, or imperative control | [`Animatable`](https://developer.android.com/reference/kotlin/androidx/compose/animation/core/Animatable) |
  • Network accessline 41
    | Drag, fling, interruption, or imperative control | [`Animatable`](https://developer.android.com/reference/kotlin/androidx/compose/animation/core/Animatable) |
  • Network accessline 65
    For animated fills, prefer `drawBehind { drawRect(color.value) }` over a value-form background when the color updates every frame. For an API ambiguity, start with the official [Choose an animation API](https://developer.android.com/develop
  • Network accessline 65
    For animated fills, prefer `drawBehind { drawRect(color.value) }` over a value-form background when the color updates every frame. For an API ambiguity, start with the official [Choose an animation API](https://developer.android.com/develop
  • Network accessline 65
    For animated fills, prefer `drawBehind { drawRect(color.value) }` over a value-form background when the color updates every frame. For an API ambiguity, start with the official [Choose an animation API](https://developer.android.com/develop

skills/deliver-spec/references/implementation-mode.md

  • Network accessline 95
    - [Claude Code](https://code.claude.com/docs/en/sub-agents): `Explore` and
  • Network accessline 100
    `Agent(isolation: "worktree")`; it bases on the default branch, not the   integrated `HEAD`. - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not
  • Network accessline 101
    integrated `HEAD`. - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not   a delegable subagent.
  • Network accessline 102
    - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not
  • Network accessline 103
    a delegable subagent. - [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent):   no built-in subagent; inspect its delegation extension and agent
  • Network accessline 104
    - [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent):

skills/gradle-run/scripts/gradle_run.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/gradle-run/scripts/test_gradle_run.py

  • Executable scriptline 1
    Executable file

skills/grounded-writing/references/source-observations.md

  • Network accessline 9
    - [Shopping Is Not a Category](https://chrisbanes.me/posts/shopping-is-not-a-category/)
  • Network accessline 13
    meaning of the original category. Use this pattern for practical experience   pieces with a clear mechanism and a bounded personal conclusion. - [Haze 2.0](https://chrisbanes.me/posts/haze-2.0.0/)
  • Network accessline 14
    pieces with a clear mechanism and a bounded personal conclusion. - [Haze 2.0](https://chrisbanes.me/posts/haze-2.0.0/)   (22 September 2026) leads with what developers can build, explains the visible
  • Network accessline 15
    - [Haze 2.0](https://chrisbanes.me/posts/haze-2.0.0/)
  • Network accessline 18
    with their setup, experimental limits, and migration links. Use this pattern   for announcements that help readers choose and use a feature. - [The Disappearing Middle](https://chrisbanes.me/posts/disappearing-middle-ai-software-apprentices
  • Network accessline 19
    for announcements that help readers choose and use a feature. - [The Disappearing Middle](https://chrisbanes.me/posts/disappearing-middle-ai-software-apprenticeship/)   (29 December 2025) opens with a changed personal position, qualifies re
  • Network accessline 20
    - [The Disappearing Middle](https://chrisbanes.me/posts/disappearing-middle-ai-software-apprenticeship/)
  • Network accessline 23
    Use the connection between experience, evidence, and practical judgment; do   not transplant its opinions into a new piece. - [Should you use Kotlin Sequences for Performance?](https://chrisbanes.me/posts/use-sequence/)
  • Network accessline 24
    not transplant its opinions into a new piece. - [Should you use Kotlin Sequences for Performance?](https://chrisbanes.me/posts/use-sequence/)   (13 February 2025) explains an assumption through familiar code, measures it,
  • Network accessline 25
    - [Should you use Kotlin Sequences for Performance?](https://chrisbanes.me/posts/use-sequence/)
  • Network accessline 28
    the argument. Use that willingness to revise a claim, without manufacturing   surprise, self-deprecation, or benchmark results. - [Retaining beyond ViewModels](https://chrisbanes.me/posts/retaining-beyond-viewmodels/)
  • Network accessline 29
    surprise, self-deprecation, or benchmark results. - [Retaining beyond ViewModels](https://chrisbanes.me/posts/retaining-beyond-viewmodels/)   explains lifecycle differences through code and a navigation example, answers
  • Network accessline 30
    - [Retaining beyond ViewModels](https://chrisbanes.me/posts/retaining-beyond-viewmodels/)

skills/implement-with-subagents/SKILL.md

  • Network accessline 68
    Identify the behavior-changing items and their user-approved test seams before implementation. Their owners use the separately installed [`tdd`](https://github.com/mattpocock/skills)
  • Network accessline 69
    implementation. Their owners use the separately installed [`tdd`](https://github.com/mattpocock/skills) skill directly. If a behavior item has no approved seam, obtain agreement
  • Network accessline 70
    Their owners use the separately installed [`tdd`](https://github.com/mattpocock/skills)

skills/implement-with-subagents/references/implementation-mode.md

  • Network accessline 194
    - [Claude Code](https://code.claude.com/docs/en/sub-agents): `Explore` and
  • Network accessline 199
    `Agent(isolation: "worktree")`; it bases on the default branch, not the   integrated `HEAD`. - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not
  • Network accessline 200
    integrated `HEAD`. - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not   a delegable subagent.
  • Network accessline 201
    - [OpenCode](https://opencode.ai/docs/agents): `build` is a primary agent, not
  • Network accessline 202
    a delegable subagent. - [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent):   no built-in subagent; inspect its delegation extension and agent
  • Network accessline 203
    - [Pi](https://github.com/earendil-works/pi/tree/main/packages/coding-agent):

skills/release-kotlin-library/scripts/release.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 160
    [Credential-related source omitted]
  • Access to secretsline 162
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Access to secretsline 328
    [Credential-related source omitted]
  • Access to secretsline 443
    [Credential-related source omitted]
  • Access to secretsline 489
    [Credential-related source omitted]

skills/release-kotlin-library/scripts/test_release.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 398
    [Credential-related source omitted]
  • Access to secretsline 404
    [Credential-related source omitted]
  • Access to secretsline 457
    [Credential-related source omitted]
  • Access to secretsline 465
    [Credential-related source omitted]

skills/run-github-project/references/normalized-ticket.md

  • Network accessline 64
    "number": 42,   "title": "Short title",   "url": "https://github.com/owner/repository/issues/42",
  • Network accessline 65
    "title": "Short title",   "url": "https://github.com/owner/repository/issues/42",   "state": "OPEN",
  • Network accessline 66
    "url": "https://github.com/owner/repository/issues/42",
  • Network accessline 78
    {       "commentId": "IC_plan",       "permalink": "https://github.com/owner/repository/issues/42#issuecomment-1",
  • Network accessline 79
    "commentId": "IC_plan",       "permalink": "https://github.com/owner/repository/issues/42#issuecomment-1",       "author": "octocat",
  • Network accessline 80
    "permalink": "https://github.com/owner/repository/issues/42#issuecomment-1",
  • Network accessline 96
    {       "number": 91,       "url": "https://github.com/owner/repository/pull/91",
  • Network accessline 97
    "number": 91,       "url": "https://github.com/owner/repository/pull/91",       "author": "octocat",
  • Network accessline 98
    "url": "https://github.com/owner/repository/pull/91",
  • Network accessline 149
    "wayfinderReconciliation": {     "commentId": "IC_reconciliation",     "permalink": "https://github.com/owner/repository/issues/52#issuecomment-2",
  • Network accessline 150
    "commentId": "IC_reconciliation",     "permalink": "https://github.com/owner/repository/issues/52#issuecomment-2",     "author": "octocat",
  • Network accessline 151
    "permalink": "https://github.com/owner/repository/issues/52#issuecomment-2",
  • Network accessline 156
    "mapNumber": 7,     "projectItemId": "PVTI_example",     "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",
  • Network accessline 157
    "projectItemId": "PVTI_example",     "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",     "configurationDigest": "sha256:configuration",
  • Network accessline 158
    "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",
  • Network accessline 184
    "configurationRenewal": {     "commentId": "IC_renewal",     "permalink": "https://github.com/owner/repository/issues/52#issuecomment-3",
  • Network accessline 185
    "commentId": "IC_renewal",     "permalink": "https://github.com/owner/repository/issues/52#issuecomment-3",     "author": "octocat",
  • Network accessline 186
    "permalink": "https://github.com/owner/repository/issues/52#issuecomment-3",
  • Network accessline 187
    "author": "octocat",     "markerCommentId": "IC_reconciliation",     "markerPermalink": "https://github.com/owner/repository/issues/52#issuecomment-2",
  • Network accessline 188
    "markerCommentId": "IC_reconciliation",     "markerPermalink": "https://github.com/owner/repository/issues/52#issuecomment-2",     "markerPayloadDigest": "<marker payload digest>",
  • Network accessline 189
    "markerPermalink": "https://github.com/owner/repository/issues/52#issuecomment-2",
  • Network accessline 223
    "number": 43,   "title": "Unblocked issue awaiting triage",   "url": "https://github.com/owner/repository/issues/43",
  • Network accessline 224
    "title": "Unblocked issue awaiting triage",   "url": "https://github.com/owner/repository/issues/43",   "state": "OPEN",
  • Network accessline 225
    "url": "https://github.com/owner/repository/issues/43",
  • Network accessline 308
    {   "commentId": "IC_replan",   "permalink": "https://github.com/owner/repository/issues/42#issuecomment-2",
  • Network accessline 309
    "commentId": "IC_replan",   "permalink": "https://github.com/owner/repository/issues/42#issuecomment-2",   "author": "octocat",
  • Network accessline 310
    "permalink": "https://github.com/owner/repository/issues/42#issuecomment-2",
  • Network accessline 312
    "createdAt": "2026-07-28T11:00:00Z",   "disposition": "autonomous-replan",   "previousPlanPermalink": "https://github.com/owner/repository/issues/42#issuecomment-1",
  • Network accessline 313
    "disposition": "autonomous-replan",   "previousPlanPermalink": "https://github.com/owner/repository/issues/42#issuecomment-1",   "previousPlanDigest": "<plan payload digest>",
  • Network accessline 314
    "previousPlanPermalink": "https://github.com/owner/repository/issues/42#issuecomment-1",

skills/run-github-project/references/wayfinder-lane.md

  • Network accessline 122
    "mapNumber": 7,   "projectItemId": "PVTI_child",   "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",
  • Network accessline 123
    "projectItemId": "PVTI_child",   "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",   "configurationDigest": "sha256:configuration",
  • Network accessline 124
    "outcomePermalink": "https://github.com/owner/repository/issues/52#issuecomment-1",

skills/run-github-project/scripts/rank_tickets.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/run-github-project/scripts/test_rank_tickets.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 60
    "commentId": f"IC_plan_{number}",         "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"
  • Network accessline 61
    "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"         ),
  • Network accessline 62
    f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"
  • Network accessline 109
    "number": number,         "title": f"Issue {number}",         "url": f"https://github.com/acme/repo/issues/{number}",
  • Network accessline 110
    "title": f"Issue {number}",         "url": f"https://github.com/acme/repo/issues/{number}",         "state": "OPEN",
  • Network accessline 111
    "url": f"https://github.com/acme/repo/issues/{number}",
  • Network accessline 165
    "commentId": f"IC_wayfinder_reconciliation_{number}",         "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"
  • Network accessline 166
    "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"         ),
  • Network accessline 167
    f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"
  • Network accessline 174
    "projectItemId": f"PVTI_{number}",         "outcomePermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-resolution"
  • Network accessline 175
    "outcomePermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-resolution"         ),
  • Network accessline 176
    f"https://github.com/acme/repo/issues/{number}#issuecomment-resolution"
  • Network accessline 186
    result = {         "commentId": f"IC_renewal_{number}",         "permalink": f"https://github.com/acme/repo/issues/{number}#issuecomment-renewal",
  • Network accessline 187
    "commentId": f"IC_renewal_{number}",         "permalink": f"https://github.com/acme/repo/issues/{number}#issuecomment-renewal",         "author": "chris",
  • Network accessline 188
    "permalink": f"https://github.com/acme/repo/issues/{number}#issuecomment-renewal",
  • Network accessline 190
    "markerCommentId": f"IC_wayfinder_reconciliation_{number}",         "markerPermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"
  • Network accessline 191
    "markerPermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"         ),
  • Network accessline 192
    f"https://github.com/acme/repo/issues/{number}#issuecomment-reconcile"
  • Network accessline 203
    result = {         "number": number,         "url": f"https://github.com/acme/repo/pull/{number}",
  • Network accessline 204
    "number": number,         "url": f"https://github.com/acme/repo/pull/{number}",         "author": "chris",
  • Network accessline 205
    "url": f"https://github.com/acme/repo/pull/{number}",
  • Network accessline 226
    "commentId": f"IC_replan_{number}",         "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-replan"
  • Network accessline 227
    "permalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-replan"         ),
  • Network accessline 228
    f"https://github.com/acme/repo/issues/{number}#issuecomment-replan"
  • Network accessline 232
    "disposition": disposition,         "previousPlanPermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"
  • Network accessline 233
    "previousPlanPermalink": (             f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"         ),
  • Network accessline 234
    f"https://github.com/acme/repo/issues/{number}#issuecomment-plan"
  • Network accessline 368
    requeued["replanRequest"].update(             baseSha="newly-observed-base",             pullRequestUrl="https://github.com/acme/repo/pull/403",
  • Network accessline 369
    baseSha="newly-observed-base",             pullRequestUrl="https://github.com/acme/repo/pull/403",             implementationHeadSha="head-403",
  • Network accessline 370
    pullRequestUrl="https://github.com/acme/repo/pull/403",
  • Network accessline 492
    def test_selects_the_unique_unsuperseded_plan_revision(self) -> None:         old_permalink = (             "https://github.com/acme/repo/issues/202#issuecomment-plan-v1"
  • Network accessline 493
    old_permalink = (             "https://github.com/acme/repo/issues/202#issuecomment-plan-v1"         )
  • Network accessline 494
    "https://github.com/acme/repo/issues/202#issuecomment-plan-v1"
  • Network accessline 495
    )         replan_permalink = (             "https://github.com/acme/repo/issues/202#issuecomment-replan"
  • Network accessline 496
    replan_permalink = (             "https://github.com/acme/repo/issues/202#issuecomment-replan"         )
  • Network accessline 497
    "https://github.com/acme/repo/issues/202#issuecomment-replan"
  • Network accessline 513
    commentId="IC_plan_202_v2",                     permalink=(                         "https://github.com/acme/repo/issues/202#issuecomment-plan-v2"
  • Network accessline 514
    permalink=(                         "https://github.com/acme/repo/issues/202#issuecomment-plan-v2"                     ),
  • Network accessline 515
    "https://github.com/acme/repo/issues/202#issuecomment-plan-v2"
  • Network accessline 533
    def test_requeued_ticket_hands_off_after_a_new_plan_revision(self) -> None:         old_permalink = (             "https://github.com/acme/repo/issues/203#issuecomment-plan-v1"
  • Network accessline 534
    old_permalink = (             "https://github.com/acme/repo/issues/203#issuecomment-plan-v1"         )
  • Network accessline 535
    "https://github.com/acme/repo/issues/203#issuecomment-plan-v1"
  • Network accessline 558
    commentId="IC_plan_203_v2",                     permalink=(                         "https://github.com/acme/repo/issues/203#issuecomment-plan-v2"
  • Network accessline 559
    permalink=(                         "https://github.com/acme/repo/issues/203#issuecomment-plan-v2"                     ),
  • Network accessline 560
    "https://github.com/acme/repo/issues/203#issuecomment-plan-v2"
  • Network accessline 604
    report = replan_request(413)                     if retained_pr:                         report.update(pullRequestUrl="https://github.com/acme/repo/pull/413",
  • Network accessline 605
    if retained_pr:                         report.update(pullRequestUrl="https://github.com/acme/repo/pull/413",                                       implementationHeadSha="head-413")
  • Network accessline 606
    report.update(pullRequestUrl="https://github.com/acme/repo/pull/413",
  • Network accessline 647
    revision=2,                     supersedes=(                         "https://github.com/acme/repo/issues/206"
  • Network accessline 648
    supersedes=(                         "https://github.com/acme/repo/issues/206"                         "#issuecomment-missing"
  • Network accessline 649
    "https://github.com/acme/repo/issues/206"
  • Network accessline 1189
    {                     "number": 240,                     "url": "https://github.com/acme/repo/pull/240",
  • Network accessline 1190
    "number": 240,                     "url": "https://github.com/acme/repo/pull/240",                     "closesIssue": True,
  • Network accessline 1191
    "url": "https://github.com/acme/repo/pull/240",
  • Network accessline 1205
    "reasons": [                         "has open implementation PRs "                         "['https://github.com/acme/repo/pull/240']",
  • Network accessline 1206
    "has open implementation PRs "                         "['https://github.com/acme/repo/pull/240']",                     ],
  • Network accessline 1207
    "['https://github.com/acme/repo/pull/240']",
  • Network accessline 1339
    "reasons": [                         "current user's PR does not close the issue "                         "https://github.com/acme/repo/pull/600",
  • Network accessline 1340
    "current user's PR does not close the issue "                         "https://github.com/acme/repo/pull/600",                     ],
  • Network accessline 1341
    "https://github.com/acme/repo/pull/600",
  • Network accessline 1417
    replanRequest=replan_request(                         208, disposition=disposition,                         pullRequestUrl="https://github.com/acme/repo/pull/208",
  • Network accessline 1418
    208, disposition=disposition,                         pullRequestUrl="https://github.com/acme/repo/pull/208",                         implementationHeadSha="wrong-head",
  • Network accessline 1419
    pullRequestUrl="https://github.com/acme/repo/pull/208",
  • Network accessline 1718
    implementationPlan={                 "commentId": "IC_plan_192",                 "permalink": "https://github.com/acme/repo/issues/192#issuecomment-plan",
  • Network accessline 1719
    "commentId": "IC_plan_192",                 "permalink": "https://github.com/acme/repo/issues/192#issuecomment-plan",                 "author": "chris",
  • Network accessline 1720
    "permalink": "https://github.com/acme/repo/issues/192#issuecomment-plan",
  • Network accessline 1741
    implementationPlan={                 "commentId": "IC_plan_193",                 "permalink": "https://github.com/acme/repo/issues/193#issuecomment-plan",
  • Network accessline 1742
    "commentId": "IC_plan_193",                 "permalink": "https://github.com/acme/repo/issues/193#issuecomment-plan",                 "author": "mallory",
  • Network accessline 1743
    "permalink": "https://github.com/acme/repo/issues/193#issuecomment-plan",
  • Network accessline 1796
    report = replan_request(             208,             pullRequestUrl="https://github.com/acme/repo/pull/208",
  • Network accessline 1797
    208,             pullRequestUrl="https://github.com/acme/repo/pull/208",             implementationHeadSha="wrong-head",
  • Network accessline 1798
    pullRequestUrl="https://github.com/acme/repo/pull/208",
  • Network accessline 1803
    208,             commentId="IC_plan_208_v2",             permalink="https://github.com/acme/repo/issues/208#issuecomment-plan-v2",
  • Network accessline 1804
    commentId="IC_plan_208_v2",             permalink="https://github.com/acme/repo/issues/208#issuecomment-plan-v2",             digest="sha256:plan-208-v2",
  • Network accessline 1805
    permalink="https://github.com/acme/repo/issues/208#issuecomment-plan-v2",
  • Network accessline 1842
    implementationPlan={                 "commentId": "IC_plan_196",                 "permalink": "https://github.com/acme/repo/issues/196#issuecomment-plan",
  • Network accessline 1843
    "commentId": "IC_plan_196",                 "permalink": "https://github.com/acme/repo/issues/196#issuecomment-plan",                 "author": "mallory",
  • Network accessline 1844
    "permalink": "https://github.com/acme/repo/issues/196#issuecomment-plan",
  • Network accessline 1909
    implementationPlan={                 "commentId": "IC_plan_194",                 "permalink": "https://github.com/acme/repo/issues/194#issuecomment-plan",
  • Network accessline 1910
    "commentId": "IC_plan_194",                 "permalink": "https://github.com/acme/repo/issues/194#issuecomment-plan",                 "author": "chris",
  • Network accessline 1911
    "permalink": "https://github.com/acme/repo/issues/194#issuecomment-plan",
  • Network accessline 2491
    configurationRenewal=configuration_renewal(                     334, commentId="IC_second_renewal",                     permalink="https://github.com/acme/repo/issues/334#issuecomment-renewal-2",
  • Network accessline 2492
    334, commentId="IC_second_renewal",                     permalink="https://github.com/acme/repo/issues/334#issuecomment-renewal-2",                     configurationDigest="sha256:second-renamed-config",
  • Network accessline 2493
    permalink="https://github.com/acme/repo/issues/334#issuecomment-renewal-2",

skills/run-github-project/scripts/test_watch_project.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 152
    [Credential-related source omitted]
  • Access to secretsline 153
    [Credential-related source omitted]

skills/run-github-project/scripts/watch_project.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 131
    def fetch(
  • Network accessline 295
    deadline = parse_time(args.deadline)     while now() < deadline:         responses = fetch(args, deadline)
  • Network accessline 296
    while now() < deadline:         responses = fetch(args, deadline)         if responses is None:
  • Network accessline 297
    responses = fetch(args, deadline)
  • Network accessline 321
    prs = fingerprint(fetch(args, pr_only=True))["pullRequest"] if args.pr else {}
  • Network accessline 322
    current = {**prior, "pullRequest": prs}             else:                 current = fingerprint(fetch(args))
  • Network accessline 323
    else:                 current = fingerprint(fetch(args))             report(current)
  • Network accessline 324
    current = fingerprint(fetch(args))

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 202 facts

and 152 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/android-benchmark-comparison/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/android-benchmark-comparison/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/android-benchmark-comparison/SKILL.md.github/skills/<skill-name>/
OpenCodeNativePath .opencode/INSTALL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Add this badge to your README

It updates every night and links to this page.

chrisbanes/skills: #805 on hotskills, 1.1k stars

[![chrisbanes/skills on hotskills](https://hotskills.dev/badge/chrisbanes-skills.svg)](https://hotskills.dev/skill/chrisbanes-skills/)