Frontmcp Channels
agentfront/frontmcp
A skill your agent uses when pushing real-time notifications or events into Claude Code (or another MCP client) sessions, or building two-way chat bridges.
Reaching other systems from an Arandu (Go) application, and letting them reach it -- the client of an external API with its interface and fake, webhooks sent and received, and tools, resources and…
$ npx skills add arandu-io/arandu --skill arandu-integrations -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install arandu-io/arandu arandu-integrations --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/arandu-integrations .claude/skills/arandu-integrations && rm -rf skills-srcUse ~/.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/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .claude/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrationsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add arandu-io/arandu --skill arandu-integrations -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install arandu-io/arandu arandu-integrations --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/arandu-integrations .agents/skills/arandu-integrations && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .agents/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add arandu-io/arandu --skill arandu-integrations -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install arandu-io/arandu arandu-integrations --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/arandu-integrations .cursor/skills/arandu-integrations && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .cursor/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/arandu-io/arandu.git --path .agents/skills/arandu-integrations--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add arandu-io/arandu --skill arandu-integrations -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install arandu-io/arandu arandu-integrations --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/arandu-integrations .gemini/skills/arandu-integrations && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .gemini/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install arandu-io/arandu arandu-integrationsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add arandu-io/arandu --skill arandu-integrations -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/arandu-integrations .github/skills/arandu-integrations && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .github/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add arandu-io/arandu --skill arandu-integrations -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install arandu-io/arandu arandu-integrations --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/arandu-io/arandu.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/arandu-integrations .opencode/skills/arandu-integrations && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "arandu-integrations" agent skill from https://github.com/arandu-io/arandu/tree/main/.agents/skills/arandu-integrations into .opencode/skills/arandu-integrations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arandu-integrations", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
arandu-integrationsReaching other systems from an Arandu (Go) application, and letting them reach it -- the client of an external API with its interface and fake, webhooks sent and received, and tools, resources and…
Arandu Integrations is an agent skill from arandu-io/arandu. Reaching other systems from an Arandu (Go) application, and letting them reach it -- the client of an external API with its interface and fake, webhooks sent and received, and tools, resources and prompts an AI assistant calls over MCP. Use when the request is to "call the payment provider", "integrate with X", "send to Slack", "receive a webhook", "verify a signature", "expose this to Claude/an assistant/an agent", "add an MCP tool", or when an http.Client, an API key or app/Clients is involved. Covers aru…
Its SKILL.md is about 3.1k 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 Backend & APIs, covering Webhooks and MCP servers. It works with Model Context Protocol, Slack and GitHub. The repository describes itself as: The Arandu project skeleton, which aru new clones. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b8a4273. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gobashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
NEWSLETTER_WEBHOOK_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Arandu Integrations loads about 3.1k tokens when it runs. Until then it costs about 150 tokens; SKILL.md has 1,262 words of instructions outside code blocks.
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.
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.
The full file from arandu-io/arandu at commit b8a4273, republished under its MIT licence (© arandu-io). 1,262 words, ~3,104 tokens.
.claude/skills/arandu-integrations/SKILL.md (or your agent's skills folder).A call that leaves the process, a request another system sends in, or a
capability handed to an assistant. The service that decides to make the call
is arandu-module; the job or listener that makes it later is arandu-async.
app/Clients/NewsletterClient.go, its fake
app/Clients/NewsletterFake.go, the service that depends on it
(NoteService.SendDigest) and newsletter at the end of bootstrap/app.go.NewsletterWebhookController.Store,
NewsletterEventService.Receive, the /webhooks/newsletter route and the
middleware.CSRFExcept("/webhooks/") passed to CSRFProtect in
bootstrap/app.go.arandu-ecosystem first whether the client belongs here at all: a client
another project would reuse, and an engine that wraps another technology --
a model runtime, OCR, a camera -- is a github.com/hyz-is/arandu-* module.| piece | contract |
|---|---|
| client | app/Clients/<Vendor>Client.go: a typed <Vendor>Config (its secret kept out of logs and JSON), a small <Vendor> interface the callers depend on, and <Vendor>Client built with the config and a *client.Factory from github.com/arandu-io/hesape/http/client |
| fake | app/Clients/<Vendor>Fake.go: the interface, answering what it was told and recording Calls |
| a request | only through the factory: c.http.CreatePendingRequest().BaseURL(...), which carries a deadline, bounds the body and refuses an address inside the network |
| a caller | a service, a job or a listener, through the interface; never a controller, a model or a view |
| configuration | a Credential in config/services.go, read from the environment, named in .env.example |
| webhook received | app/Http/Controllers/<Vendor>WebhookController.go, Store(ctx), under /webhooks/: it reads the raw body and checks webhook.Verify(secrets, timestamp, deliveryID, body, signature) from github.com/arandu-io/hesape/webhook -- the headers are X-Arandu-Timestamp, X-Arandu-Delivery-ID and X-Arandu-Signature -- and the timestamp's age, before it binds or stores anything; then a service records the delivery and the answer is 2xx |
| CSRF | /webhooks/ is exempt by name, in bootstrap/app.go: middleware.CSRFProtect(csrf, sessions.IDFromRequest, middleware.CSRFExcept("/webhooks/")). A route under it has no protection but its own signature check |
| webhook secret | a Credential in config/services.go (NEWSLETTER_WEBHOOK_SECRET), 32 bytes or more, named empty in .env.example; with none the controller answers 404 |
| webhook sent | webhook.NewPublisher(manager, resolver) is an events.Publisher: a listener in listeners.Each that delivers outbox events, signed, with retries |
| MCP | app/Mcp/<Name>.go: a tool with Name, Description, Schema and Handle(ctx, r mcp.Request), calling a service with r.Subject(), from github.com/arandu-io/mcp |
aru make:client Newsletter writes the config, the
interface, the client, the fake and a test that runs the client against a
faked factory. Add each call to the interface, the client and the fake
together, in their custom blocks, with types of the client's own so no
caller reads the vendor's wire format.NewsletterDigest.Key does, sent as
Idempotency-Key.clients.Newsletter, set
with WithNewsletter; bootstrap/app.go builds the real client from the
configuration, or leaves it nil when nothing is configured, so the
application runs with no credential and a test passes the fake./webhooks/<vendor>, in a controller that
reads the raw body, verifies the signature and the timestamp before
anything else, binds the request from the same bytes, hands it to a service
and answers 2xx. The service records the delivery -- the example stores an
event in the outbox under the delivery id, which the relay hands to the
listeners after the answer -- so a slow step never times the sender out. Work
that needs retries is a job a listener of that event dispatches, never one
the service dispatches: the job's package imports app/Services.aru make:mcp-tool ShowNote --service=Note (make:mcp-resource, make:mcp-prompt for the other two
kinds). It writes the type in app/Mcp, its test and the wiring; the module
is taken first with go get github.com/arandu-io/mcp@v0.4.0.aru make:client <Vendor>aru make:mcp-tool <Name> --service=<Entity>, aru make:mcp-resource <Name> --service=<Entity>, aru make:mcp-prompt <Name>Code that calls an external system, and the two stand-ins a test builds for it -- neither reaches the network:
package example
import (
"context"
"net/http"
"github.com/arandu-io/hesape/http/client"
clients "<module>/app/Clients"
)
// Announce takes the client's interface, never the concrete type, so a test
// hands it the fake.
func Announce(ctx context.Context, newsletter clients.Newsletter, title string) error {
return newsletter.SendDigest(ctx, clients.NewsletterDigest{
Key: "announce-" + title,
Notes: []clients.NewsletterNote{{Title: title}},
})
}
// Offline builds the fake, which records the call, and the real client over a
// faked factory, which records the request it would have sent.
func Offline() (*clients.NewsletterFake, *clients.NewsletterClient) {
fake := &clients.NewsletterFake{}
factory := client.NewFactory(nil).Fake(func(*http.Request) (*http.Response, error) {
return client.NewResponseFromBytes(http.StatusAccepted, nil, nil).HTTPResponse(), nil
})
faked := clients.NewNewsletterClient(clients.NewsletterConfig{BaseURL: "https://newsletter.example.test"}, factory)
return fake, faked
}A received webhook, reduced to its order: the signature over the exact
bytes, then the request, then the service, then 202 -- as
NewsletterWebhookController.Store does it:
package example
import (
"bytes"
"io"
"net/http"
"github.com/arandu-io/hesape/exception"
hhttp "github.com/arandu-io/hesape/http"
"github.com/arandu-io/hesape/webhook"
requests "<module>/app/Http/Requests"
services "<module>/app/Services"
)
// Receive refuses a delivery whose signature does not verify before it reads
// a single field of it.
func Receive(ctx *hhttp.Context, secrets webhook.SecretSet, events *services.NewsletterEventService) error {
body, err := io.ReadAll(ctx.Request.Body)
if err != nil {
return err
}
delivery := ctx.Header("X-Arandu-Delivery-ID")
if !webhook.Verify(secrets, ctx.Header("X-Arandu-Timestamp"), delivery, body, ctx.Header("X-Arandu-Signature")) {
return exception.Abort(http.StatusUnauthorized, "this delivery is not signed by the provider")
}
ctx.Request.Body = io.NopCloser(bytes.NewReader(body))
var in requests.NewsletterEventRequest
if err := ctx.Bind(&in); err != nil {
return err
}
if err := events.Receive(ctx.Ctx(), delivery, in); err != nil {
return err
}
return ctx.Status(http.StatusAccepted)
}The controller also refuses a timestamp more than five minutes from its clock, which this reduction leaves out: the signature covers the timestamp, so a captured delivery replayed later is refused even though it still verifies.
An MCP tool, as aru make:mcp-tool ShowNote --service=Note writes it. It is
not compiled here, because this project does not require the mcp module:
func (t ShowNote) Handle(ctx context.Context, r mcp.Request) (mcp.Response, error) {
id, _ := r.String("id")
found, err := t.svc.Get(ctx, r.Subject(), id)
if err != nil {
return mcp.Response{}, err
}
return mcp.JSON(resources.NewNoteResource(found)), nil
}app/Clients, or with an http.Client of your
own: client-outside-clients. The factory is what bounds it.client-reaches-the-model):
it answers about the other system, and the service decides about ours.app/Services with a *Port or *Adapter name:
the client is the one shape for an external system.CSRFExcept in bootstrap/app.go.
A route under /webhooks/ that skips the check is a form any site can post.New calls go in the custom blocks of the client, its interface and its fake --
all three, or the fake stops standing in. A field the config needs goes in the
config struct and in its LogValue only if it is not a secret.
config/services.go and .env.example: the credential.bootstrap/app.go: the client built once, from the credential, with
client.NewFactory(nil), and handed to the services that call it.bootstrap/app.go with its
secret and its service, handed to the routes through Deps, and its route
under /webhooks/ in the custom block of routes/web.go, with no guard. The
CSRFExcept("/webhooks/") is already there; a vendor under another prefix
is a second argument to it, never a second exemption elsewhere.bootstrap/app.go and mounted in
routes/web.go with r.Action("POST", "/mcp", mcp.Web(d.MCP), ...) behind a
guard; there is no routes/ai.go. Behind RequireToken a client holding a
personal access token reaches it -- see arandu-api.Fake,
answers inside the process, and PreventStrayRequests(true) makes a request
nothing stubbed an error.tests/Feature/NewsletterWebhook_test.go does: a
delivery signed with webhook.Sign and no CSRF token answers 2xx and is
recorded; another secret, a changed body, no signature and an old timestamp
answer 401 with nothing recorded; no secret configured answers 404.The example verifies the wire format github.com/arandu-io/hesape/webhook
sends, which is what another Arandu application delivers. A vendor that signs
another way -- another header, another string signed -- is verified with that
vendor's scheme in its own controller, still before anything else. A delivery
the provider retries is recorded again; whatever acts on it keys on the
delivery id, as every consumer of an at-least-once relay has to.
There is no MCP example in this project, because requiring the mcp module is a decision for the project that exposes itself.
Run them all, in this order, as AGENTS.md lists them:
export GOWORK=off
aru model:build --check
aru view:build
gofmt -l $(find . -name '*.go' -not -path '*/testdata/*' -not -name '*.kyse.go')
go vet ./...
bash tests/test-layout-guard.sh
go test -race ./...
go build ./...
aru doctor<!-- arandu:begin custom -->
<!-- arandu:end custom -->
© arandu-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/arandu-integrations of arandu-io/arandu.
Open the folder on GitHubat commit b8a4273
Arandu Integrations 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Arandu Integrations this skillarandu-io/arandu | 281 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Frontmcp Channelsagentfront/frontmcp | 146 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| ComposioComposioHQ/composio | 30k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Setup Context A8cwoocommerce/woocommerce-ios | 358 | — | ~627 | Automated safety check: Notes | GPL-2.0 | |
| X Twitter ScraperXquik-dev/x-twitter-scraper | 211 | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Zalo AgentPhucMPham/zalo-agent-cli | 166 | — | ~2.3k | Automated safety check: Pass | MIT |
agentfront/frontmcp
A skill your agent uses when pushing real-time notifications or events into Claude Code (or another MCP client) sessions, or building two-way chat bridges.
ComposioHQ/composio
Route and complete Composio work across Composio For You and Composio Platform.
woocommerce/woocommerce-ios
Set up the ContextA8C MCP server for accessing Automattic internal resources (Slack, Linear, P2s, GitHub Enterprise, etc.)
Xquik-dev/x-twitter-scraper
Use Xquik to fetch X (Twitter) data or act through a connected account: search, profiles, followers, replies, threads, timelines, media downloads, bulk exports, trends, monitors, signed webhooks…
PhucMPham/zalo-agent-cli
Automate Zalo messaging, Official Account (OA), and MCP server integration via zalo-agent-cli.
yolfinance/yolfi-agent
Add Yolfi crypto checkout, payment links, and webhook handling to an app through @yolfi/agent or the Yolfi MCP server.
arandu-io/arandu
Answering a program rather than a person in an Arandu (Go) application -- a JSON Resource, a JSON answer from the same routes the pages use, problem+json errors, bearer-token authentication and…
arandu-io/arandu
Work that does not happen inside the request in an Arandu (Go) application -- background jobs and the worker, scheduled tasks, domain events through the outbox, listeners, notifications, mail and…
arandu-io/arandu
Decides whether a feature belongs in the application or in one of five shared Arandu modules before adding permissions, wallets, tags, Markdown rendering or API docs.
arandu-io/arandu
Start here for any change to an Arandu (Go) application that adds or changes behaviour -- "add invoices", "let users publish a post", "send a weekly report", "call the payment provider", "expose…
arandu-io/arandu
Controllers, requests and routes of an Arandu (Go) application -- the seven resource actions, a resource nested under another, a singleton, a single-action (invokable) controller, a named action…
arandu-io/arandu
Adds a new entity, resource or CRUD module to an Arandu Go application by writing a YAML specification instead of hand-writing the Go code.
Works with
Categories
Reaching other systems from an Arandu (Go) application, and letting them reach it -- the client of an external API with its interface and fake, webhooks sent and received, and tools, resources and…. Arandu Integrations is an agent skill from arandu-io/arandu. Reaching other systems from an Arandu (Go) application, and letting them reach it -- the client of an external API with its interface and fake, webhooks sent and received, and tools, resources and prompts an AI assistant calls over MCP.
Arandu Integrations fits situations like: the request is to call the payment provider; integrate with X; receive a webhook; verify a signature.
Run `npx skills add arandu-io/arandu --skill arandu-integrations -a claude-code`. Or copy the skill folder (.agents/skills/arandu-integrations in arandu-io/arandu) into .claude/skills/arandu-integrations in your project. Claude Code loads it when a task matches its description.
Run `npx skills add arandu-io/arandu --skill arandu-integrations -a codex`. Or copy the skill folder (.agents/skills/arandu-integrations in arandu-io/arandu) into .agents/skills/arandu-integrations in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add arandu-io/arandu --skill arandu-integrations -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/arandu-integrations, .gemini/skills/arandu-integrations, .github/skills/arandu-integrations and .opencode/skills/arandu-integrations in your project.
Going by SKILL.md and its folder, Arandu Integrations needs the command-line tools its instructions call (go and bash) and credentials named NEWSLETTER_WEBHOOK_SECRET. Our summary lists: A credential in NEWSLETTER_WEBHOOK_SECRET.
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.
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.
Arandu Integrations is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Arandu Integrations: Frontmcp Channels (agentfront/frontmcp, 146 stars), Composio (ComposioHQ/composio, 30k stars), Setup Context A8c (woocommerce/woocommerce-ios, 358 stars) and X Twitter Scraper (Xquik-dev/x-twitter-scraper, 211 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
arandu-io (a GitHub organization) maintains it in arandu-io/arandu, which has 281 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 10, 2026.
Source: arandu-io/arandu on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.