Agent skill

Runtime Bootstrap Keeper

by discord-php in discord-php/DiscordPHP

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

MITAuto-check passedDevelopment

Install Runtime Bootstrap Keeper

skills CLI
$ npx skills add discord-php/DiscordPHP --skill runtime-bootstrap-keeper -a claude-code

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

GitHub CLI
$ gh skill install discord-php/DiscordPHP runtime-bootstrap-keeper --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/runtime-bootstrap-keeper .claude/skills/runtime-bootstrap-keeper && 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
runtime-bootstrap-keeper
GitHub stars
1.1k
Token cost
~4k tokens
SKILL.md length
1,925 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

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

  • Works in 5 steps: handleReady() → setupChunking() → checkForChunks() → …
  • Touching Discord.php
  • SKILL.md covers Goal, Read in this order, Core contract and Options and intent resolution, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Runtime Bootstrap Keeper is an agent skill from discord-php/DiscordPHP. Maintain Discord.php runtime bootstrapping, startup options, event loop, gateway connection, reconnection, member chunking, cache configuration, and process lifecycle. Use when touching Discord.php, startup wiring, intents, or root repositories.

Its SKILL.md is about 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 Development, covering Async programming. It works with Discord and PHP. The repository describes itself as: An API to interact with the popular messaging app Discord. The licence is MIT.

When your agent uses it

  • Touching Discord.php
  • Root repositories

Example prompts

  • “/runtime-bootstrap-keeper”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. handleReady()
  2. setupChunking()
  3. checkForChunks()
  4. handleGuildMembersChunk()
  5. ready()

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are php).

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Runtime Bootstrap Keeper loads about 4k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 1,925 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~68
When it runs · the whole SKILL.md, loaded when a task matches
~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 passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

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

Download SKILL.mdSave it as .claude/skills/runtime-bootstrap-keeper/SKILL.md (or your agent's skills folder).
name
runtime-bootstrap-keeper
description
Maintain Discord.php runtime bootstrapping, startup options, event loop, gateway connection, reconnection, member chunking, cache configuration, and process lifecycle. Use when touching Discord.php, startup wiring, intents, or root repositories.

Skill: runtime-bootstrap-keeper

Use this skill when work touches src/Discord/Discord.php, startup options, loop setup, cache configuration, gateway connection behavior, readiness, member chunking, reconnect logic, or root repositories.

This is not generic PHP skill. This is the orchestrator-lifecycle guard. Load it when changing how the client boots, what dependencies it wires, how it connects to Discord's gateway, or how it reaches the ready state.

Goal

Keep Discord as the single bootstrapping orchestrator:

  • resolves all user-facing options centrally through OptionsResolver
  • wires infrastructural dependencies once during construction
  • connects to the gateway eagerly from the constructor
  • delegates loop start to a one-liner run() method
  • maintains lifecycle flags that the rest of the system depends on
  • owns root repositories as long-lived properties on the Client part
  • manages the ready flow: guild backfill → member chunking → init emission

Read in this order

  1. src/Discord/Discord.php — the entire orchestrator
  2. src/Discord/WebSockets/Handlers.php — handler registry for gateway events
  3. src/Discord/WebSockets/Event.php — event constant definitions
  4. src/Discord/Factory/Factory.php — part/repository factory, created once here
  5. src/Discord/Parts/User/Client.php — the Client part that holds root repos
  6. README.md — public-facing construction examples
  7. guide/basics.rst — user-facing lifecycle guide

Do not start by reading individual event classes. Understand the wiring in Discord.php first, then follow references outward.

Core contract

Discord is the application entry point. It is not a service class, not a controller, not a request handler. It is a long-running CLI process orchestrator built on ReactPHP. The entire class rests on these guarantees:

  • __construct() does real work: resolves options, creates HTTP client, creates Factory, creates Client part, registers handlers, and calls connectWs() to open the gateway
  • run() only starts the ReactPHP event loop — it must stay a one-liner
  • the class assumes CLI SAPI — a web-server warning is logged if php_sapi_name() is not cli or micro
  • Factory is created exactly once and shared across the entire system
  • root repositories (guilds, users, private_channels, emojis, sounds, sticker_packs, lobbies) live on the Client part, proxied through Discord::__get()

If a change violates any of these, the runtime becomes unpredictable.

Options and intent resolution

All user-facing configuration is resolved in resolveOptions() using Symfony's OptionsResolver. This is the single normalization point for the entire client.

Key options
OptionTypeDefaultPurpose
tokenstringrequiredBot authentication token
loopLoopInterfaceLoop::get()ReactPHP event loop
loggerLoggerInterface|nullMonolog stdoutPSR-3 logger
intentsarray|intIntents::getDefaultIntents()Gateway intents bitmask
loadAllMembersbool|arrayfalseEnable member chunking for all or specific guild IDs
disabledEventsarray[]Event names to skip in handler registry
storeMessagesboolfalseWhether to cache messages
retrieveBansbool|arrayfalseWhether to fetch bans on guild create
cachearray|CacheConfig|CacheInterface[AbstractRepository::class => null]Cache backend for repositories
collectionstringCollection::classCollection class implementing ExCollectionInterface
useTransportCompressionbooltruezlib-stream transport compression
usePayloadCompressionbooltruePer-payload compression
socket_optionsarray[]Passed to React socket connector
large_thresholdint|nullnullGuild member threshold for "large" guilds
presencearray|nullnullInitial presence payload
Intent folding

If intents is passed as an array of intent constants, resolveOptions() folds them into a single bitmask with bitwise OR. This happens once at resolution time — the rest of the system sees only the integer.

If loadAllMembers is enabled, the resolver enforces that GUILD_MEMBERS intent is included, throwing IntentException otherwise.

Cache normalization

The cache option normalizer converts bare CacheInterface or CacheConfig values into the canonical [AbstractRepository::class => $config] array shape. The default null value means LegacyCacheWrapper (in-memory) is used. External cache backends are treated as experimental and logged as warnings.

Construction vs run() lifecycle

What __construct() does (in order)
  1. Validates x86 GMP extension requirement
  2. Calls resolveOptions() — all normalization and validation happens here
  3. Stores $token, $loop, $logger, $cacheConfig, $collectionClass
  4. Checks CLI SAPI — logs critical warning if web context detected
  5. Creates SocketConnector and Connector (WebSocket factory)
  6. Creates Handlers instance — the gateway event handler registry
  7. Warns if critical events (GUILD_CREATE, GUILD_DELETE, RESUMED, READY, GUILD_MEMBERS_CHUNK) are in disabledEvents
  8. Removes disabled event handlers from registry
  9. Creates Http client with React driver
  10. Creates Factory — the single part/repository factory for the system
  11. Creates Client part via factory — this is where root repositories are born
  12. Stores compression settings
  13. Calls connectWs() — initiates the gateway connection
What run() does
php
public function run(): void
{
    $this->loop->run();
}

Nothing else. The loop was already wired during construction. run() simply unblocks the event loop. Do not add bootstrap logic here.

Why this matters

The eager constructor means the system is fully wired before run() is called. User code that registers event listeners between new Discord(...) and $discord->run() works because the loop has not started yet but all infrastructure is ready. Moving connection logic to run() would break this contract.

Gateway connection and reconnection

connectWs()

Retrieves the gateway URL via setGateway(), then opens a WebSocket connection through $this->wsFactory. On success, calls handleWsConnection(). On failure, calls handleWsConnectionFailed() which retries after 5 seconds.

setGateway() calls the REST endpoint Endpoint::GATEWAY_BOT to get the gateway URL and session start limit. The URL is decorated with v, encoding, and optional compress=zlib-stream query parameters in buildParams(). If a resume_gateway_url was received from a prior READY, that is used instead.

handleWsConnection()

Sets $this->connected = true, initializes the payload rate counter (120/60s limit with 5 reserved for heartbeats), and registers message, close, and error listeners on the WebSocket.

handleWsClose()

Cancels heartbeat and payload timers. If $this->closing is true, returns silently. If the close code is a critical op code (checked via Op::getCriticalCloseCodes()), does not reconnect. Otherwise, sets $reconnecting = true and calls connectWs() after a 2-second delay.

handleHello()

Received when the gateway connection is established. Calls setupHeartbeat() with the server-provided interval, then calls identify().

identify() vs resume()

identify() sends OP_IDENTIFY with token, properties, intents, shard info, and presence. resume() sends OP_RESUME with token, session ID, and last sequence number. The gateway decides which path to use after reconnection via handleInvalidSession().

handleInvalidSession()

If the session is resumable ($data->d is true), attempts resume(). Otherwise, calls identify() after a 2-second delay.

Heartbeat

setupHeartbeat() creates a periodic timer at the server-specified interval. Each heartbeat() call sends OP_HEARTBEAT with the current sequence number and starts a guard timer. If no HEARTBEAT_ACK arrives within one heartbeat interval, the connection is closed with code 1001, triggering reconnect.

Ready flow

The ready sequence is the most delicate part of the bootstrap. It ensures all guilds are loaded and optionally chunked before userland code runs.

Step 1: handleReady()

Receives the READY payload. If $this->reconnecting is true, it skips full re-parsing and just emits reconnected. Otherwise:

  1. Stores resume_gateway_url for future reconnects
  2. Fills the Client part with user data and stores sessionId
  3. Iterates content->guilds and processes each through GuildCreate::handle()
  4. Tracks unavailable guilds

If all guilds are immediately available, calls ready() directly. Otherwise, sets up temporary GUILD_CREATE and GUILD_DELETE listeners to track when unavailable guilds become available. A 60-second safety timer also triggers ready() as fallback.

Step 2: setupChunking()

Called when all guilds are available. If loadAllMembers is false, calls ready() immediately. Otherwise, starts a periodic 5-second timer that calls checkForChunks().

Step 3: checkForChunks()

Drains the $largeGuilds array in batches of 50, sending OP_REQUEST_GUILD_MEMBERS for each. Guilds are added to $largeGuilds by addLargeGuild(), which is called from GuildCreate event handling. If loadAllMembers is an array of guild IDs, only those guilds are chunked.

Show full SKILL.md (753 more words)Show less
Step 4: handleGuildMembersChunk()

Processes incoming member chunk payloads, caching each Member into the guild's member repository and each User into the top-level user repository. When a guild's cached member count reaches its member_count, it is removed from $largeSent. When $largeSent is empty, ready() fires.

Step 5: ready()

Guarded by $emittedInit — runs at most once. Initializes the voice manager if the class exists. Emits init (the primary ready event). Emits deprecated ready with a warning. Drains $unparsedPackets — dispatch events that arrived before init are processed here.

Root repositories

Root repositories are not properties of Discord itself. They live on the Client part (src/Discord/Parts/User/Client.php), which defines $repositories:

  • guilds → GuildRepository
  • users → UserRepository
  • private_channels → PrivateChannelRepository
  • emojis → EmojiRepository
  • sounds → SoundRepository
  • sticker_packs → StickerPackRepository
  • lobbies → LobbyRepository

Discord::__get() proxies all unknown property accesses to $this->client, so $discord->guilds resolves to $this->client->guilds. A small allowlist (loop, options, logger, http, application_commands) is intercepted before delegation.

These repositories are long-lived for the entire process lifetime. They are the system of record for cached Discord state.

Factory and dependency wiring

Factory is created once in the constructor: $this->factory = new Factory($this). It holds a reference back to the Discord instance and provides part() and repository() methods for typed construction.

The Client part is the first object the factory creates: $this->client = $this->factory->part(Client::class, []). After that, all part and repository creation flows through this single factory instance.

Callers access the factory via $discord->getFactory() or the convenience $discord->factory($class, $data, $created) method. Do not create ad-hoc factory instances elsewhere — the system assumes one factory tied to one client.

Cache configuration

The cacheConfig property is an array keyed by repository class names. getCacheConfig($repository_class) looks up the config for a specific repository class, falling back to AbstractRepository::class as the default key.

Default behavior: null config means LegacyCacheWrapper is used (in-memory WeakMap-backed cache). External cache backends (React\Cache\CacheInterface, Psr\SimpleCache\CacheInterface) are wrapped in CacheConfig and logged as experimental.

Per-repository cache configs can be set by passing an array keyed by repository class names in the cache option. This allows different repositories to use different cache backends.

Logging and lifecycle flags

Lifecycle flags
PropertyTypeMeaning
$connectedboolWebSocket is currently open
$closingboolClient is intentionally shutting down
$reconnectingboolClient is in reconnect cycle
$emittedInitboolinit event has been emitted at least once
$reconnectCountintNumber of reconnections since boot
$seqintCurrent gateway sequence number
$sessionIdstringCurrent gateway session ID

These flags are checked across connection, dispatch, and close handlers. Changing their semantics or lifecycle ordering can silently break reconnection or event delivery.

Logger

If no logger is provided, resolveOptions() creates a Monolog instance writing to stdout at Debug level with LineFormatter. The logger is stored on $this->logger and exposed via getLogger() and __get('logger').

Dispatch routing

processWsMessage() decodes JSON payloads and routes by opcode. OP_DISPATCH goes to handleDispatch(), which checks Handlers for a registered event class. If found, it instantiates the handler, runs handle() as a coroutine, and emits the event name with resolved data. If not found, it checks a static map of internal handlers (VOICE_STATE_UPDATE, VOICE_SERVER_UPDATE, RESUMED, READY, GUILD_MEMBERS_CHUNK).

Before $emittedInit is true, non-critical dispatch events are queued in $unparsedPackets rather than processed immediately. Only GUILD_CREATE and GUILD_DELETE are allowed through during the ready flow.

Smells

Stop if you see:

  • bootstrap logic added to run() instead of __construct()
  • a second Factory instance created anywhere
  • option validation scattered outside resolveOptions()
  • intent bitmask manipulation after options are resolved
  • $emittedInit checked or set from outside Discord.php
  • critical events (GUILD_CREATE, GUILD_DELETE, READY, GUILD_MEMBERS_CHUNK) removed without understanding the ready flow
  • synchronous blocking in production code paths (acceptable only in tests)
  • web-framework concepts (request/response, middleware, controllers) in Discord.php
  • reconnect logic that does not respect Op::getCriticalCloseCodes()
  • cache config manipulation after construction
  • root repositories created outside the Client part

Checklist before commit

  • resolveOptions() handles any new option with proper type, default, and normalization
  • __construct() wiring order preserved — options first, then HTTP, then factory, then client, then connect
  • run() remains a one-liner
  • lifecycle flags ($connected, $closing, $reconnecting, $emittedInit) not repurposed
  • ready flow sequence (guild backfill → chunking → init) not broken
  • critical events not silently disabled
  • connectWs() → handleWsConnection() → handleHello() → identify() chain intact
  • heartbeat timer and ACK guard logic preserved
  • $unparsedPackets drain in ready() still works
  • reconnect path (handleWsClose() → delay → connectWs()) handles critical vs non-critical close codes
  • tests/docs updated if public behavior changed

Bottom line

Discord.php is the single eager orchestrator for a long-running CLI process. It resolves options once, wires dependencies once, connects to the gateway eagerly, and starts the loop on demand. Keep it centered on that job — do not turn it into a service locator, request handler, or lazy-boot framework.

© 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/runtime-bootstrap-keeper of discord-php/DiscordPHP.

Open the folder on GitHubat commit 580c66a

Compare with similar skills

Runtime Bootstrap Keeper 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.

Runtime Bootstrap Keeper compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Runtime Bootstrap Keeper this skilldiscord-php/DiscordPHP1.1k—~4kAutomated safety check: PassMIT
Php ConcurrencyHoangNguyen0403/agent-skills-standard570—~683Automated safety check: PassMIT
Dt Obs ServicesDynatrace/dynatrace-for-ai161—~3.3kAutomated safety check: PassApache-2.0
Code Audit3stoneBrother/code-audit8931 repos~2.7kAutomated safety check: PassNone
WooCommerce Code Reviewwoocommerce/woocommerce11k3 repos~1.1kAutomated safety check: PassCustom licence
Skill Doli Code ReviewDolibarr/dolibarr7.7k1 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Php Concurrency

    HoangNguyen0403/agent-skills-standard

    Implement concurrency and non-blocking I/O in modern PHP. An agent skill from HoangNguyen0403/agent-skills-standard.

    570 GitHub stars~683 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Dt Obs Services

    Dynatrace/dynatrace-for-ai

    Service performance monitoring with RED metrics (Rate, Errors, Duration) and runtime-specific telemetry for Java, .NET, Node.js, Python, PHP, and Go.

    161 GitHub stars~3.3k tokensUpdated 6 days ago
    DevOps & CloudAuto-check passed
  • Code Audit

    3stoneBrother/code-audit

    Professional code security audit skill covering 55+ vulnerability types.

    893 GitHub starsUsed in 1 repo~2.7k tokens
    SecurityAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Skill Doli Code Review

    Dolibarr/dolibarr

    Reviews Dolibarr PHP code for compliance with coding standards and security best practices, and fixes identified issues.

    7.7k GitHub starsUsed in 1 repo~1.1k tokens
    DevelopmentAuto-check passed
  • Bug Triage

    symfony/symfony

    Decide whether open Bug PRs target the correct branch. An agent skill from symfony/symfony.

    31k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed

More from discord-php/DiscordPHP

All 14 skills in this repo
  • Async Test And Doc Sync

    discord-php/DiscordPHP

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

    1.1k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check: notes
  • 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

Works with

Categories

Questions about Runtime Bootstrap Keeper

What does Runtime Bootstrap Keeper do?

Maintain Discord.php runtime bootstrapping, startup options, event loop, gateway connection, reconnection, member chunking, cache configuration, and process lifecycle. Runtime Bootstrap Keeper is an agent skill from discord-php/DiscordPHP.php runtime bootstrapping, startup options, event loop, gateway connection, reconnection, member chunking, cache configuration, and process lifecycle.

When should I use Runtime Bootstrap Keeper?

Runtime Bootstrap Keeper fits situations like: touching Discord.php; root repositories.

How do I install Runtime Bootstrap Keeper in Claude Code?

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

How do I install Runtime Bootstrap Keeper in Codex?

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

Can I use Runtime Bootstrap Keeper 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 runtime-bootstrap-keeper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/runtime-bootstrap-keeper, .gemini/skills/runtime-bootstrap-keeper, .github/skills/runtime-bootstrap-keeper and .opencode/skills/runtime-bootstrap-keeper in your project.

What does Runtime Bootstrap Keeper need to run?

SKILL.md names no scripts, command-line tools or credentials: Runtime Bootstrap Keeper is instructions for the agent only.

Does Runtime Bootstrap Keeper access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Runtime Bootstrap Keeper safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Runtime Bootstrap Keeper use?

Runtime Bootstrap Keeper 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 Runtime Bootstrap Keeper use?

About 4k tokens (SKILL.md is roughly 16k 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 Runtime Bootstrap Keeper?

Skills that share tags, products or a category with Runtime Bootstrap Keeper: Php Concurrency (HoangNguyen0403/agent-skills-standard, 570 stars), Dt Obs Services (Dynatrace/dynatrace-for-ai, 161 stars), Code Audit (3stoneBrother/code-audit, 893 stars) and WooCommerce Code Review (woocommerce/woocommerce, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Runtime Bootstrap Keeper?

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.