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

capforge

v0.1.6

Published

MCP server that makes AI agents get SAP CAP/CDS right: modern scaffolding + real validation loop against cds compile

Readme

CAPforge

MCP server that makes your AI agent (Claude Code, Cursor, …) get SAP CAP/CDS right: scaffolding that follows real conventions, plus real validation against cds compile. The agent doesn't stop until the code compiles clean.

Website · npm · Leelo en español

It calls no LLM itself: your agent brings the model (BYOK). Zero inference cost, nothing leaves your machine.

Why

General-purpose models hallucinate CDS — annotation terms that don't exist, OData v2 syntax mixed into v4, invented fields — because there's barely any public CAP code in training data. CAPforge gives your agent the two things it's missing:

  1. Curated, sourced knowledge — modern CAP/UI5 best practices distilled from official SAP docs (capire, OData vocabularies, reference samples), every rule with its source URL.
  2. A real feedback loop — tools that run the actual compiler and linter and feed errors back until everything is green.

Tools

| Tool | What it does | |---|---| | cap_project_context | Codebase-aware: compiles your real project to CSN and returns the existing model (services, entities, fields, associations) so the agent reuses instead of inventing | | cap_scaffold_entity | Generates all 5 layers of an entity following conventions: CDS model with aspects (cuid, managed), projection, annotations.cds (HeaderInfo, LineItem, Facets, FieldGroups), mock CSV, i18n | | cap_write_files | Writes files into the project | | cap_validate | Runs cds compile and returns errors (the loop) | | cap_lint | Runs cds lint (best practices / anti-patterns) | | cap_deploy_check | Layer 3: deploys to a throwaway sqlite DB and loads the mock CSVs — catches what compile can't (CSV columns that don't exist, bad data, duplicate keys) | | cap_analyze_legacy_ui5 | Migration mode: inventories a legacy freestyle UI5 app (read-only) — datasources, sections, columns, bound fields, value helps, actions, i18n | | ui5_scaffold_section | Generates a freestyle ObjectPage section (SmartTable with p13nData, or SimpleForm) + handler stubs + i18n | | ui5_validate_view | The UI5 loop: well-formed XML + every declared event handler exists in the controller | | ui5_lint | Layer 3: runs SAP's official ui5lint — deprecated APIs, UI5 2.x readiness, CSP issues | | resource conventions://cap | Canonical knowledge core + your team's convention profile + migration map |

Normal flow: contextscaffoldwritevalidate → correct → until green. Migration flow: analyze_legacycontext (target) → propose map (REUSED / NEW / DISCARDED) → scaffoldvalidate.

Requirements

  • Node.js 18+
  • @sap/cds-dk available (globally or in the project) for cap_validate to work.

Install & try

npm install
node test-loop.js   # full-loop demo against the bundled sandbox

VS Code / SAP Business Application Studio

Install the "CAPforge" extension from the VS Code Marketplace (also on Open VSX): it registers the MCP server automatically for Copilot agent mode, no mcp.json editing.

Point the capforge.conventionsPath setting to your team's private conventions. BAS note: BAS installs extensions from Open VSX, but its AI assistant does not consume MCP servers natively yet — the extension is ready for the day it does.

Claude Code / Cursor

Register in Claude Code (project .mcp.json or global config):

{
  "mcpServers": {
    "capforge": {
      "command": "npx",
      "args": ["-y", "capforge"]
    }
  }
}

Load your team's private conventions (optional):

"env": { "CAPFORGE_CONVENTIONS": "PATH/to/team-conventions.md" }

Make your agent actually use it

Registering an MCP server does not force the agent to call it: agents only invoke tools when they decide the task needs them, and for CAP they often just write CDS from memory. Two ways to fix that:

  1. Workspace instructions (recommended). Add this to your project's agent instructions file — .github/copilot-instructions.md (Copilot), CLAUDE.md (Claude Code) or .cursorrules (Cursor):
For every SAP CAP or UI5 task: call cap_project_context before generating and reuse existing names; scaffold with cap_scaffold_entity / ui5_scaffold_section; validate with cap_validate, cap_lint and cap_deploy_check (UI5: ui5_validate_view, ui5_lint) and correct until everything is green. Never hand-write CDS without a clean cap_validate run.
  1. The cap_workflow prompt. CAPforge ships an MCP prompt with the same workflow: pick it from your client's prompt list (in VS Code: type / in chat) at the start of a CAP session.

You can also just ask explicitly ("scaffold this with the capforge tools and validate until clean") — but the instructions file is what makes it automatic for the whole team.

Knowledge

  • knowledge/canonical core: modern CAP/UI5 best practices (aspects, compositions, drafts, authorization, Fiori annotations, i18n, tooling, migration map), anchored to official SAP docs with cited sources.
  • conventions/house profile: one team's style, overridable via CAPFORGE_CONVENTIONS. Wins over the core on style conflicts.

The conventions://cap resource serves both, combined, to the agent.

Community

The roadmap is decided by the people who build CAP every day: roadmap discussion. Contributions welcome — see CONTRIBUTING.md.

License

MIT.