Agent skill

Async Test And Doc Sync

by discord-php in discord-php/DiscordPHP

Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow.

MITAuto-check: notesTesting & QA

Install Async Test And Doc Sync

skills CLI
$ npx skills add discord-php/DiscordPHP --skill async-test-and-doc-sync -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install discord-php/DiscordPHP async-test-and-doc-sync --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/discord-php/DiscordPHP.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/async-test-and-doc-sync .claude/skills/async-test-and-doc-sync && rm -rf skills-src

Use ~/.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/

Facts

Skill name
async-test-and-doc-sync
GitHub stars
1.1k
Token cost
~3.4k tokens
SKILL.md length
1,558 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow.

  • Works in 10 steps: tests/functions.php — wait() helper and… → tests/DiscordTestCase.php — integration… → tests/bootstrap.php — autoload, .env… → …
  • Changing public behavior
  • SKILL.md covers Goal, Read in this order, Core contract and Unit tests vs integration tests, plus 7 more sections
  • Calls composer and yarn; reaches discord.com; needs DISCORD_TOKEN

What it does

Async Test And Doc Sync is an agent skill from discord-php/DiscordPHP. Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow. Use when adding tests, updating docs, or changing public behavior.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Test strategy, Integration testing and Unit testing. It works with PHP and Discord. The repository describes itself as: An API to interact with the popular messaging app Discord. The licence is MIT.

When your agent uses it

  • Changing public behavior
  • Tasks that involve Test strategy
  • Tasks that involve Integration testing

Example prompts

  • “/async-test-and-doc-sync”

Requirements

  • A credential in DISCORD_TOKEN

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. tests/functions.php — wait() helper and getMockDiscord() factory
  2. tests/DiscordTestCase.php — integration base class with real channel setup
  3. tests/bootstrap.php — autoload, .env loading, singleton wiring
  4. phpunit.xml — test suite configuration, coverage settings
  5. Representative unit tests
  6. Representative integration tests
  7. guide/ — long-form RST documentation for parts, events, builders
  8. docs/ — Gatsby site source for published documentation
  9. README.md — getting started, installation, basic usage
  10. CONTRIBUTING.md — contributor workflow and code style expectations

What it can do on your machine

Read from SKILL.md and the folder at commit 580c66a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • composer
    • yarn

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • discord.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • DISCORD_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Async Test And Doc Sync loads about 3.4k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,558 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:29
    3. `tests/bootstrap.php` — autoload, `.env` loading, singleton wiring
  • NoteMentions a .env fileSKILL.md:75
    ST_CHANNEL`, and `TEST_CHANNEL_NAME` in `.env` or environment. `DiscordSingleton` shares a single connected client acros
  • NoteMentions a .env fileSKILL.md:216
    Integration tests require `.env` or shell variables: `DISCORD_TOKEN` (bot token), `TEST_CHANNEL` (channel ID), `TEST_CHA

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.

SKILL.md

The full file from discord-php/DiscordPHP at commit 580c66a, republished under its MIT licence (© discord-php). 1,558 words, ~3,417 tokens.

Download SKILL.mdSave it as .claude/skills/async-test-and-doc-sync/SKILL.md (or your agent's skills folder).
name
async-test-and-doc-sync
description
Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow. Use when adding tests, updating docs, or changing public behavior.

Skill: async-test-and-doc-sync

Use this skill when adding or changing public behavior, updating builder validation or part semantics, writing or reviewing tests, updating PHPDoc blocks or guide pages, or touching anything user-facing enough that tests or docs should move with it.

This is alignment skill. Load it when the question is not "does the code work?" but "do tests prove it and do docs describe it?"

Goal

Keep tests, PHPDoc, and long-form documentation synchronized with the public behavior of parts, repositories, builders, and helpers:

  • unit tests assert semantic behavior, not incidental implementation
  • integration tests prove real async flows against Discord
  • PHPDoc blocks serve as contract surface for IDEs and generated reference
  • guide and docs pages reflect current recommended usage
  • changes to public behavior always travel with their companion test and doc updates

Read in this order

  1. tests/functions.php — wait() helper and getMockDiscord() factory
  2. tests/DiscordTestCase.php — integration base class with real channel setup
  3. tests/bootstrap.php — autoload, .env loading, singleton wiring
  4. phpunit.xml — test suite configuration, coverage settings
  5. Representative unit tests:
    • tests/Builders/ModalBuilderTest.php
    • tests/FunctionsTest.php
    • tests/CollectionsTest.php
  6. Representative integration tests:
    • tests/Parts/Channel/ChannelTest.php
    • tests/Parts/Channel/Message/Embed/EmbedTest.php
    • tests/Parts/Channel/Message/MessageTest.php
  7. guide/ — long-form RST documentation for parts, events, builders
  8. docs/ — Gatsby site source for published documentation
  9. README.md — getting started, installation, basic usage
  10. CONTRIBUTING.md — contributor workflow and code style expectations

Core contract

Tests and docs in this repo are not afterthoughts. They form a contract surface:

  • PHPDoc @property and @property-read annotations on parts are how IDEs and users discover magic properties. If code adds a fillable field or getter mutator without updating the docblock, the property is effectively invisible to consumers.
  • Unit tests extend DiscordTestCase; use $this->getMockBuilder() for isolated class dependencies and getMockDiscord() when a lightweight real client is needed.
  • Integration tests extending DiscordTestCase prove that async flows work against real Discord infrastructure. These require environment variables and a live bot token.
  • Guide pages in guide/ and Gatsby pages in docs/ describe recommended patterns. They should only change when public behavior or preferred usage actually changes — not for internal refactors.

If a change touches public behavior but skips one of these surfaces, the contract is incomplete.

Unit tests vs integration tests

Unit tests

All unit-test classes must extend DiscordTestCase, including tests for logic isolated from Discord I/O:

  • builder validation limits (content length, component counts, enum values)
  • helper function behavior (contains(), studly(), escapeMarkdown(), poly_strlen())
  • collection operations (push(), map(), filter(), from())
  • part attribute hydration from raw arrays using getMockDiscord()
  • serialization shape from jsonSerialize() on builders

Use $this->getMockBuilder() for isolated class dependencies and getMockDiscord() when a lightweight real client is needed. DiscordTestCase supplies the shared test lifecycle and skips cleanly when Discord integration is unavailable.

Example: tests/Builders/ModalBuilderTest.php uses $this->expectException(\LogicException::class) and str_repeat('a', 101) to verify title length validation.

Integration tests

Use wait() and return the wait() call when the test must interact with real Discord infrastructure — sending/editing/deleting messages, pinning, creating invites, fetching message history, verifying embed hydration, or testing repository fetch()/freshen() against live API.

These tests require DISCORD_TOKEN, TEST_CHANNEL, and TEST_CHANNEL_NAME in .env or environment. DiscordSingleton shares a single connected client across the suite. Reach the live channel only through $this->channel(): it skips the test when there is no token, so the rest of the class still runs offline. A test that needs Discord some other way should check self::isLive() and skip itself.

A test that sends a request should not need Discord at all: set getMockHttpDriver() on a getMockDiscord() client and assert on the requests it records, as tests/Parts/Guild/GuildRequestsTest.php does. Those run in CI on every push and pull request (.github/workflows/tests.yml).

The getMockDiscord() factory

Defined in tests/functions.php. Creates a minimal Discord instance with empty token and NullLogger — suitable for constructing parts and testing attribute access without connecting to gateway.

Use $this->getMockBuilder() for mocked class dependencies. Use getMockDiscord() for local client-backed tests; otherwise use and return wait() for asynchronous work.

Test suite organization

Directory layout

Test files mirror the source structure. Builder tests live in tests/Builders/, part tests in tests/Parts/{Family}/, and utility tests in tests/ root. Infrastructure files (bootstrap.php, functions.php, DiscordSingleton.php, DiscordTestCase.php) live at the tests/ root.

Where to place new tests
  • Builder tests → tests/Builders/{BuilderName}Test.php
  • Part tests → tests/Parts/{Family}/{PartName}Test.php
  • Helper/utility tests → tests/ root
  • All unit tests extend DiscordTestCase
phpunit.xml

Discovers all *Test.php under tests/ recursively. Coverage tracks src/. Bootstrap is tests/bootstrap.php.

Async testing patterns

The wait() bridge

wait() in tests/functions.php bridges Promise-based async code into synchronous PHPUnit assertions:

php
function wait(callable $callback, float $timeout = TIMEOUT, ?callable $timeoutFn = null)

It works by scheduling $callback on the ReactPHP loop via futureTick(), passing a $resolve callable that stops the loop and captures the result, adding a timeout timer (default 10s), running the loop synchronously, and re-throwing any captured exception after loop stops.

Common assertion patterns in integration tests

Promise chain with assertion then resolve:

php
return wait(function (Discord $discord, $resolve) {
    $this->channel()->sendMessage('test content')
        ->then(fn (Message $m) => $this->assertEquals('test content', $m->content))
        ->then($resolve, $resolve);
});

Custom timeout with fallback:

php
return wait(function (Discord $discord, $resolve) {
    // ... async work ...
}, 10, fn () => $this->markTestIncomplete('Hit rate limit.'));

Key rules:

  • always pass $resolve as both fulfillment and rejection handler at the end of the chain
  • the $callback receives (Discord $discord, callable $resolve) — use $discord for client access
  • return the wait() call from the test method so PHPUnit tracks it
  • default timeout is 10 seconds (TIMEOUT constant)

PHPDoc as contract surface

What to document

Every part class should have class-level docblock annotations for @property (read/write magic properties from $fillable), @property-read (computed properties from mutators or repos), @method (delegated magic methods), @since (version introduced), and @link (Discord API docs URL).

Why this matters

PHPDoc in this repo serves three purposes: IDE autocompletion (consumers rely on @property since all access goes through __get()), generated reference (docs tooling reads annotations), and static analysis (Mago uses docblocks for type checking).

When to update docblocks
  • new field added to $fillable → add @property with type
  • new getter mutator added → add @property-read with return type
  • new repository exposed in $repositories → add @property-read for the repository type
  • field removed or deprecated → update or remove annotation
  • type changed (e.g., string to ?string) → update annotation
Show full SKILL.md (611 more words)Show less
Example pattern
php
/**
 * @property string      $id
 * @property string      $name
 * @property-read Carbon $created_at
 * @property-read MemberRepository $members
 * @link https://discord.com/developers/docs/resources/guild
 */
class Guild extends Part

Guide and documentation structure

guide/ — long-form RST content

User-facing guides organized by topic: basics.rst (getting started, intents), parts/ (per-resource docs), events/ (gateway handling), repositories.rst, message_builder.rst, components.rst, interactions.rst, permissions.rst, collection.rst, faq.rst.

docs/ — Gatsby site

Published documentation website source. Build with cd docs && yarn install && yarn build.

README.md

Installation, requirements, basic bot example. Update when minimum PHP version, major dependencies, or getting-started flow changes.

When docs must change

Docs should change when:

  • a new public method, property, or repository is added that users will call
  • preferred usage pattern changes (e.g., builder replaces raw array)
  • a method signature or return type changes
  • a feature is deprecated and users need migration guidance
  • default behavior changes in a way that affects existing bots

Docs should not change when:

  • internal refactoring preserves all public behavior
  • test infrastructure changes
  • cache implementation details shift without affecting public API
  • gateway event internals change without altering emitted shapes

Running tests and checks

PurposeCommand
Run PHPUnit suitecomposer unit
Static analysiscomposer run-script mago-lint
Code style fixercomposer run-script cs
Non-mutating style check./vendor/bin/pint --test --config ./pint.json ./src
Compare with Discord's live OpenAPI descriptioncomposer openapi
Docs site buildcd docs && yarn install && yarn build
Integration test environment

Integration tests require .env or shell variables: DISCORD_TOKEN (bot token), TEST_CHANNEL (channel ID), TEST_CHANNEL_NAME (channel name). When absent, DiscordSingleton falls back to getMockDiscord(), the tests that use $this->channel() skip, and every other test runs.

Running subsets

Use --filter to target specific tests: ./vendor/bin/phpunit --filter ModalBuilderTest

What to test

Builder tests should assert
  • validation boundary cases (max length, max count, invalid enum)
  • correct exception types and messages for invalid input
  • jsonSerialize() output shape matches Discord API expectations
  • new() factory wires arguments correctly
  • fromPart() round-trip preserves meaningful fields
  • optional fields omitted when unset
Part tests should assert
  • getter mutators return correct types (Carbon, Collection, nested Part)
  • attribute hydration from raw Discord payload arrays
  • getCreatableAttributes() / getUpdatableAttributes() include correct fields
  • permission and semantic guard behavior in save() overrides
  • computed properties resolve correctly from related data
Integration tests should assert
  • end-to-end flows complete through real Discord API
  • returned objects are correctly typed instances
  • repository operations (fetch, freshen, save) produce expected state
  • message operations (send, edit, delete, pin) work as documented
What not to test
  • trivial getters/setters with no logic
  • internal cache mechanics (test through public behavior instead)
  • Discord API behavior itself (test your code's handling of responses)

Smells

Stop if you see:

  • new public magic property with no @property docblock entry
  • builder with validation logic but no test for boundary cases
  • integration test that could be a unit test (no real Discord interaction needed)
  • wait() used in a test that never performs async I/O
  • guide page updated for internal refactor that did not change public behavior
  • public method added with no test and no docblock
  • test asserting exact internal array structure instead of semantic behavior
  • getMockDiscord() used where asynchronous real client interaction is actually needed

Checklist before commit

  • New public properties have @property or @property-read in class docblock
  • Builder validation has boundary test cases (valid edge, invalid edge, exception type)
  • Integration tests use wait() pattern with proper $resolve chaining
  • Every test class extends DiscordTestCase
  • Tests use getMockBuilder() or getMockDiscord() where appropriate
  • Async tests use and return wait() with proper $resolve chaining
  • Test file placed in correct directory mirroring source structure
  • Guide pages updated if preferred usage or public contract changed
  • README updated if installation, requirements, or getting-started flow changed
  • composer unit passes
  • composer run-script mago-lint reports no new issues
  • No tests left that assert implementation details instead of behavior

Bottom line

Tests prove behavior, docblocks declare surface, guides teach usage — if any of these drift from the code, users and tooling lose trust in the library.

© discord-php, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/async-test-and-doc-sync of discord-php/DiscordPHP.

Open the folder on GitHubat commit 580c66a

Compare with similar skills

Async Test And Doc Sync 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.

Async Test And Doc Sync compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Async Test And Doc Sync this skilldiscord-php/DiscordPHP1.1k—~3.4kAutomated safety check: NotesMIT
Designing TestsCloudAI-X/claude-workflow-v21.4k1 repos~1.5kAutomated safety check: PassMIT
Robotics Testingarpitg1304/robotics-agent-skills368—~4.7kAutomated safety check: PassApache-2.0
Akka.NET Testing PatternsAaronontheweb/dotnet-skills1.2k1 repos~2.4kAutomated safety check: PassMIT
Rust Testingkurealnum/dotfiles2906 repos~2.9kAutomated safety check: PassNone
MCP Testingadeze/raindrop-mcp188—~1.6kAutomated safety check: PassMIT

Similar skills

  • Designing Tests

    CloudAI-X/claude-workflow-v2

    Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.

    1.4k GitHub starsUsed in 1 repo~1.5k tokens
    Testing & QAAuto-check passed
  • Robotics Testing

    arpitg1304/robotics-agent-skills

    Testing strategies, patterns, and tools for robotics software.

    368 GitHub stars~4.7k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Akka.NET Testing Patterns

    Aaronontheweb/dotnet-skills

    Shows how to test Akka.NET actors with Akka.Hosting.TestKit: swapping services for fakes, using TestProbes, and checking persistence, plus when the older TestKit still fits.

    1.2k GitHub starsUsed in 1 repo~2.4k tokens
    Testing & QAAuto-check passed
  • Rust Testing

    kurealnum/dotfiles

    Rust testing patterns including unit tests, integration tests, async testing, property-based testing, mocking, and coverage.

    290 GitHub starsUsed in 6 repos~2.9k tokens
    Testing & QAAuto-check passed
  • MCP Testing

    adeze/raindrop-mcp

    MCP Testing Strategies with Vitest, Inspector, and Integration Tests

    188 GitHub stars~1.6k tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • Dotnet Testing

    novotnyllc/dotnet-artisan

    Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…

    233 GitHub stars~972 tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from discord-php/DiscordPHP

All 14 skills in this repo
  • Discord Php Bot Security

    discord-php/DiscordPHP

    Audit checklist for DiscordPHP bots and API libraries — stop the bot token leaking to third-party APIs or logs, keep secrets out of customids and exception messages, use constant-time comparison and…

    1.1k GitHub stars~1.2k tokensUpdated yesterday
    Auto-check: notes
  • Discord Php Extension

    discord-php/DiscordPHP

    Scaffold and maintain a DiscordPHP-based bot or an API-library-on-DiscordPHP (the DiscordPHP-MTG / DiscordPHP-NHA / DiscordPHP-Sabacc pattern) — client subclass, third-party HTTP layer, Parts…

    1.1k GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Discord Php Interactions

    discord-php/DiscordPHP

    Build DiscordPHP slash commands and message components — global command trees with subcommands, user- AND guild-installable commands usable in DMs / group DMs / guild channels, Components V2…

    1.1k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Helpers And Infra Keeper

    discord-php/DiscordPHP

    Work with DiscordPHP's infrastructure utilities — CacheWrapper, CacheConfig, BigInt, Multipart, Endpoint::bind URL templates, Collection base class, and domain Exceptions.

    1.1k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Part Model Maintainer

    discord-php/DiscordPHP

    Maintain Part domain models — fillable attributes, mutators, typed nested data, save/fetch behavior, permission checks, PHPDoc, and repository bindings.

    1.1k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Runtime Bootstrap Keeper

    discord-php/DiscordPHP

    Maintain Discord.php runtime bootstrapping, startup options, event loop, gateway connection, reconnection, member chunking, cache configuration, and process lifecycle.

    1.1k GitHub stars~4k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Async Test And Doc Sync

What does Async Test And Doc Sync do?

Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow. Async Test And Doc Sync is an agent skill from discord-php/DiscordPHP. Maintain test and documentation alignment — PHPUnit tests, async testing patterns, PHPDoc contracts, guide pages, and documentation workflow.

When should I use Async Test And Doc Sync?

Async Test And Doc Sync fits situations like: changing public behavior; tasks that involve Test strategy; tasks that involve Integration testing.

How do I install Async Test And Doc Sync in Claude Code?

Run `npx skills add discord-php/DiscordPHP --skill async-test-and-doc-sync -a claude-code`. Or copy the skill folder (.agents/skills/async-test-and-doc-sync in discord-php/DiscordPHP) into .claude/skills/async-test-and-doc-sync in your project. Claude Code loads it when a task matches its description.

How do I install Async Test And Doc Sync in Codex?

Run `npx skills add discord-php/DiscordPHP --skill async-test-and-doc-sync -a codex`. Or copy the skill folder (.agents/skills/async-test-and-doc-sync in discord-php/DiscordPHP) into .agents/skills/async-test-and-doc-sync in your project. Codex loads it when a task matches its description.

Can I use Async Test And Doc Sync in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add discord-php/DiscordPHP --skill async-test-and-doc-sync -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/async-test-and-doc-sync, .gemini/skills/async-test-and-doc-sync, .github/skills/async-test-and-doc-sync and .opencode/skills/async-test-and-doc-sync in your project.

What does Async Test And Doc Sync need to run?

Going by SKILL.md and its folder, Async Test And Doc Sync needs the command-line tools its instructions call (composer and yarn) and credentials named DISCORD_TOKEN. Our summary lists: A credential in DISCORD_TOKEN.

Does Async Test And Doc Sync access the network?

SKILL.md names 1 domain. In commands or code: discord.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Async Test And Doc Sync safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Async Test And Doc Sync use?

Async Test And Doc Sync is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Async Test And Doc Sync use?

About 3.4k 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.

What are the alternatives to Async Test And Doc Sync?

Skills that share tags, products or a category with Async Test And Doc Sync: Designing Tests (CloudAI-X/claude-workflow-v2, 1.4k stars), Robotics Testing (arpitg1304/robotics-agent-skills, 368 stars), Akka.NET Testing Patterns (Aaronontheweb/dotnet-skills, 1.2k stars) and Rust Testing (kurealnum/dotfiles, 290 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Async Test And Doc Sync?

discord-php (a GitHub organization) maintains it in discord-php/DiscordPHP, which has 1,080 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 6, 2026.

Source: discord-php/DiscordPHP on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.