npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@moonforge/moonforge-skill

v1.7.0

Published

Installs the MoonForge skill for Claude Code, Codex, Cursor, GitHub Copilot, or Windsurf.

Readme

MoonForge Skill

Version 1.7.0

An interactive skill package that instruments any game with MoonForge analytics and error tracking — whatever engine it runs on. Works with Claude Code, Codex CLI, Cursor, GitHub Copilot, and Windsurf out of the box, and any other AI coding tool that supports a similar skills/commands convention — see Installation for exact steps.

What It Does

The skill analyzes your game, recommends analytics events by priority tier, instruments the tracking calls, and verifies they compile and reach the collector.

Any engine works. MoonForge's collector is a plain HTTP endpoint, so anything that can send an HTTP POST can be instrumented:

| Your project | What the skill writes | |---|---| | Unity | A C# SDK generated into Assets/MoonForge/, plus TrackEvent() calls | | Web (Phaser, Three.js, Babylon, PlayCanvas, Kaboom, …) | A generated local JS SDK, plus trackEvent and error calls | | Anything else — Godot, Unreal, LÖVE, Bevy, MonoGame, a custom C++ engine, a game server | A full SDK generated into your project in your language, plus the calls |

Nothing has to be installed first. Every project ends up with an SDK inside it — web copies the one bundled with the skill, Unity and every other engine get one generated in their own language, all meeting the same contract. The skill never writes a tracking call against an SDK that is not in the project.

Skills Included

| Skill | Command | Purpose | |-------|---------|---------| | Orchestrator | /moonforge | Full guided flow: analyze → events → implement → verify | | Analyze | /moonforge:analyze | Scan project structure, scenes, and scripts | | Events | /moonforge:events | Recommend events by priority tier (P0-P3) | | Implement | /moonforge:implement | Write the tracking calls into your source | | Verify | /moonforge:verify | Check compilation and collector endpoint | | Uninstall | /moonforge-uninstall | Remove all MoonForge code from a game (SDK, calls, config), optional server deregistration |

Web games

For web games (Phaser, Babylon.js, Three.js, PlayCanvas, Kaboom, Excalibur, etc.), the skill follows the same analyze → events → implement → verify flow. The /moonforge skill generates a local MoonForge Web SDK, then instruments trackEvent and error calls into your JavaScript/TypeScript code. The generated SDK posts events to https://collector.moonforge.co.

Every other engine

Same flow, same result. The skill generates an SDK into your project in your own language — Godot GDScript, Unreal C++, Rust, Lua, C#, whatever the game is written in — then instruments your events through it.

The generated SDK is held to an explicit contract: session lifecycle (start, end, inactivity re-engagement), a persistent player id, identify with pre-identify event buffering, user properties, screen views, and a fire-and-forget transport that can never throw into your game loop. So P0 session events are automatic here too — you instrument P1 and up.

One thing the skill handles that is easy to get wrong by hand: the collector drops traffic its bot filter flags while still returning HTTP 200, so a misconfigured client fails invisibly. Unity, Unreal and Godot are allowlisted; anything else needs a browser-shaped User-Agent. The generated SDK sets it and /moonforge:verify checks it.

Uninstalling

/moonforge-uninstall reverses /moonforge: it inventories every MoonForge file and tracking call in the project, removes them with reviewable diffs (git-safe), optionally deregisters the game from your MoonForge account, and verifies the game still builds. Already-collected analytics data is retained server-side.

Installation

One-Line Install (Recommended)

Works for Claude Code, Codex CLI, Cursor, GitHub Copilot, and Windsurf — pass the agent you're using as the argument:

npx @moonforge/moonforge-skill claude    # or: codex, cursor, copilot, windsurf

This installs the skill globally into the right directory for that agent — ~/.claude/skills, ~/.codex/skills, ~/.cursor/skills, ~/.copilot/skills, or ~/.codeium/windsurf/skills (Windsurf's own directory namespace, not ~/.windsurf) — so it's available in every project, not just the one you're currently in. Same command on macOS, Linux, and Windows.

Using something else, or just running it with no argument? There's no folder we can safely write into on your behalf for a tool we don't know the convention for, so instead of guessing it downloads the skill files into the current directory:

npx @moonforge/moonforge-skill

This creates ./moonforge-skill/skills/ — copy the skill folder(s) you need from there into your tool's own skills/commands directory (see Other AI Tools below for the general steps).

Claude Code (git clone alternative)

If you'd rather not use npx:

git clone https://github.com/MoonForgeAI/moonforge-skill.git /tmp/moonforge-skill && cp -r /tmp/moonforge-skill/skills/* ~/.claude/skills/ && rm -rf /tmp/moonforge-skill && echo "MoonForge skill installed successfully"

Manual Install

  1. Clone this repository:

    git clone https://github.com/MoonForgeAI/moonforge-skill.git
  2. Copy the skills into your Claude Code skills directory:

    cp -r moonforge-skill/skills/* ~/.claude/skills/
  3. Verify installation — the skills should appear in your next Claude Code session.

Uninstall

rm -rf ~/.claude/skills/moonforge ~/.claude/skills/moonforge-analyze ~/.claude/skills/moonforge-events ~/.claude/skills/moonforge-implement ~/.claude/skills/moonforge-verify ~/.claude/skills/moonforge-uninstall

Other AI Tools

Every skill folder under skills/ is self-contained — a SKILL.md (the instructions the agent follows) plus references/ (per-platform detail) and, for moonforge-implement, an assets/ folder with the bundled web SDK. If your tool has its own skills/commands/rules folder, the general steps are the same regardless of exact tool:

  1. Get the files — either npx @moonforge/moonforge-skill (downloads to ./moonforge-skill/skills/) or clone this repository:
    git clone https://github.com/MoonForgeAI/moonforge-skill.git
  2. Copy (or symlink) the skills/ folders you want into your tool's skills/commands folder, the same way you would for Claude Code above.
  3. Check your tool's docs for whether it reads a SKILL.md-style folder (name + description frontmatter, subfolders alongside it) or only a single flat file per command/rule. If it's the latter, the content of each SKILL.md is still the whole instruction set — paste it in as one file, but note that the references/ and assets/ content it points to won't be reachable the same way, so cross-references to those paths may need inlining or dropping.

Uninstalling is the same in reverse: remove whatever you copied in from your tool's skills/commands folder.

Usage

Full Guided Flow

Open Claude Code in your game's directory and run:

/moonforge

(On another AI tool, invoke it however that tool triggers a named skill/command — the /moonforge slash-command syntax below is Claude Code's.)

The skill will:

  1. Detect your engine and ask for your MoonForge game ID (or read it from .moonforge.json if present)
  2. Scan your game to understand its structure
  3. Recommend events organized by priority (P0 = auto-tracked, P1 = core loop, P2 = engagement, P3 = advanced)
  4. Let you pick which tiers to implement
  5. Write the actual tracking calls into your source (with diff approval)
  6. Verify compilation and event delivery

No prerequisites — the skill asks you for everything it needs.

Pass Game ID Directly

If you already know your game ID (useful when another agent is doing the work):

/moonforge 550e8400-e29b-41d4-a716-446655440000

Run Individual Steps

/moonforge:analyze     # Just scan and profile the game
/moonforge:events      # Just get event recommendations
/moonforge:implement   # Just write TrackEvent calls
/moonforge:verify      # Just verify instrumentation

Event Priority Tiers

| Tier | What | Examples | |------|------|---------| | P0 | Session health (auto-tracked by the SDK on every platform) | session_start, session_end, scene changes | | P1 | Core loop events | level_completed, player_died, game_over | | P2 | Engagement events | tutorial_step, achievement_unlocked, settings_changed | | P3 | Advanced analytics | ad_impression, iap_completed, ab_variant_assigned |

SDK API Reference (Unity)

For web, see skills/moonforge-implement/references/web.md. For any other engine, see skills/moonforge-implement/references/generic.md, which documents the wire protocol these SDKs speak.

Analytics

using MoonForge.ErrorTracking.Analytics;
using System.Collections.Generic;

// Track a custom event
MoonForgeAnalytics.TrackEvent("event_name", new Dictionary<string, object>
{
    { "level_id", currentLevel },
    { "score", playerScore }
});

// Track a screen view
MoonForgeAnalytics.TrackScreenView("MainMenu");

// Identify a user
MoonForgeAnalytics.Identify("user_123", new Dictionary<string, object>
{
    { "plan", "premium" }
});

// Set persistent user property
MoonForgeAnalytics.SetUserProperty("player_level", 42);

Error Tracking

using MoonForge.ErrorTracking;

// Set user context for error reports
MoonForgeErrorTracker.Instance.SetUser("user_id", "email", "DisplayName");

// Set game state (attached to error reports)
MoonForgeErrorTracker.Instance.SetGameState("Playing", new Dictionary<string, object>
{
    { "level_id", 5 }
});

// Manual breadcrumbs for debugging context
MoonForgeErrorTracker.Instance.AddBreadcrumb("Boss fight started",
    BreadcrumbType.Navigation,
    new Dictionary<string, string> { { "boss_id", "dragon_01" } });

// Capture exceptions manually
MoonForgeErrorTracker.Instance.CaptureException(ex, ErrorLevel.Error,
    new Dictionary<string, object> { { "context", "inventory_load" } });

Network Error Tracking

using MoonForge.ErrorTracking.Capture;

// Replace SendWebRequest() with SendWithTracking() — auto-tracks errors
yield return request.SendWithTracking();

// Or use labeled tracked requests
yield return NetworkErrorInterceptor.Instance.SendTrackedRequest(request, "api_fetch");

Repository Structure

moonforge-skill/
├── README.md
├── CHANGELOG.md
├── skills/
│   ├── moonforge/SKILL.md                # Orchestrator entry point (/moonforge)
│   ├── moonforge-analyze/SKILL.md        # Project scanner
│   ├── moonforge-events/SKILL.md         # Event recommender
│   ├── moonforge-implement/SKILL.md      # Code writer
│   ├── moonforge-verify/SKILL.md         # Verification
│   └── moonforge-uninstall/SKILL.md      # Removal

Each skill carries references/unity.md, references/web.md, and references/generic.md — the per-platform detail for that step.

Versioning

Every SKILL.md declares a version: in its frontmatter, matching the version in package.json and the release tag. To check what you have installed on Claude Code:

grep -h "^version:" ~/.claude/skills/moonforge/SKILL.md

(On another AI tool, point this at wherever you copied moonforge/SKILL.md into instead.)

If that prints nothing, you are on a pre-1.0.0 copy from before versioning existed — reinstall with the one-line command above.

/moonforge also checks for a newer version itself at the start of every run (Step 1 of its process flow) and offers to update if one is available. The check is best-effort — it never blocks the run if GitHub is unreachable — and it only asks; it never installs anything without your say-so.

See CHANGELOG.md for what changed between versions.

License

MIT