skillforge
README.md
<div align="center">
# ⚒️ SkillForge
**The free open registry for reusable AI agent skills — search, safety-score, compose, install.**
[](https://skillforge-aniruddha-adaks-projects.vercel.app)
[](LICENSE)
[](https://nextjs.org)
[](https://skillforge-aniruddha-adaks-projects.vercel.app/api/mcp)
[](https://skillforge-aniruddha-adaks-projects.vercel.app/api/skills)
[Live App](https://skillforge-aniruddha-adaks-projects.vercel.app) · [API](https://skillforge-aniruddha-adaks-projects.vercel.app/api/skills) · [MCP](https://skillforge-aniruddha-adaks-projects.vercel.app/api/mcp) · [Issues](https://github.com/aniruddhaadak80/skillforge/issues)
</div>
> **The pick:** reusable agent skills are where agentic AI is bottlenecking — every OpenClaw / Claude Code / Cursor user rewrites the same prompts, while MCP made agents tool-hungry and SKILL.md made knowledge portable. SkillForge is the free, keyless, offline-first registry that scores, seals, and serves skills to humans *and* agents. The 10-second wow: type `pdf`, watch a safety-scored skill card appear with its seal, copy one curl line — or let your agent do it over MCP.
---
## ✨ Features
- 🔍 **Advanced search** — full-text relevance + category, platform, safety-floor, and ranking filters
- 🧮 **SkillScore engine** — deterministic, keyless, explainable: 6 itemized factors, S/A/B/C grades, separate 0–100 safety score
- 🤖 **Agent-native MCP** — JSON-RPC `initialize` / `tools/list` / `tools/call` with 5 tools + live in-page console
- 🔗 **Hash-chained seals** — `SHA-384(prevSeal ‖ canonicalJson)` on every record, replay-verifiable
- 📦 **Bundle composer** — compatibility checks, combined score, install script, MCP bundle export
- 📄 **One-command install** — raw `SKILL.md` per skill for OpenClaw, Claude Code, Cursor, any MCP agent
- 📡 **Live feeds, sealed fallback** — GitHub + Hacker News hourly; 24 curated skills keep everything alive offline
- 🗺️ **Learn the ladder** — docs + safety briefing from prompts to AGI, recursive self-improvement, and ASI
- 🕸️ **Interactive skill network** — canvas hero visual (deliberately *not* a globe: the network *is* the domain)
---
## 🏗️ System architecture
```mermaid
flowchart LR
H[Human in browser] --> UI[Next.js pages]
A[AI agent] --> MCP[MCP JSON-RPC /api/mcp]
UI --> REST[REST /api/skills /score /seals]
MCP --> ENG[SkillScore engine]
REST --> ENG
ENG --> SEAL[SHA-384 seal chain]
SEAL --> CAT[Sealed catalog]
FEED[GitHub + HN feeds] --> CAT
classDef live fill:#22d3ee,color:#04060c;
classDef ai fill:#a78bfa,color:#04060c;
classDef agent fill:#34d399,color:#04060c;
classDef infra fill:#94a3b8,color:#04060c;
class H,FEED live;
class UI,REST infra;
class ENG,SEAL,CAT ai;
class A,MCP agent;
```
## 📡 Data pipeline
```mermaid
flowchart TB
GH[GitHub repo search] --> NORM[Normalize to Skill type]
HN[HN Algolia stories] --> NORM
CUR[24 curated skills] --> NORM
NORM --> SCORE[Score: 6 factors + safety]
SCORE --> CHAIN[Seal chain in id order]
CHAIN --> SERVE[Serve UI + REST + MCP]
FAIL{Feed failed?} -.->|yes| CUR
GH -.-> FAIL
HN -.-> FAIL
classDef live fill:#22d3ee,color:#04060c;
classDef ai fill:#a78bfa,color:#04060c;
classDef caution fill:#fbbf24,color:#04060c;
classDef infra fill:#94a3b8,color:#04060c;
class GH,HN live;
class NORM,SCORE,CHAIN ai;
class FAIL caution;
class CUR,SERVE infra;
```
## 🧮 Engine flow
```mermaid
flowchart LR
IN[Skill record] --> D[Docs 20]
IN --> C[Caps 15]
IN --> X[Compat 15]
IN --> L[License 10]
IN --> S[Signal 20]
IN --> R[Safety 20]
D --> TOT[Total + grade S/A/B/C]
C --> TOT
X --> TOT
L --> TOT
S --> TOT
R --> TOT
R --> SAFE[Safety 0-100]
classDef ai fill:#a78bfa,color:#04060c;
classDef risk fill:#fb7185,color:#04060c;
classDef ok fill:#34d399,color:#04060c;
classDef infra fill:#94a3b8,color:#04060c;
class IN infra;
class D,C,X,L,S ai;
class R,TOT risk;
class SAFE ok;
```
## 🤖 Agent (MCP) sequence
```mermaid
sequenceDiagram
participant Agent as AI agent
participant MCP as /api/mcp
participant Eng as Engine
participant Chain as Seal chain
Agent->>MCP: initialize
MCP-->>Agent: protocolVersion + serverInfo
Agent->>MCP: tools/list
MCP-->>Agent: 5 tools
Agent->>MCP: tools/call search_skills pdf
MCP->>Eng: search + score
MCP-->>Agent: ranked skills
Agent->>MCP: tools/call compose_bundle
MCP->>Eng: compat check
MCP->>Chain: seal bundle
MCP-->>Agent: bundle + seal
```
## 🔗 Integrity / seal chain
```mermaid
flowchart LR
G[GENESIS] --> H1[hash skill 1]
H1 --> H2[hash skill 2]
H2 --> H3[hash skill n]
H3 --> HEAD[chain head]
V[POST /api/seals/verify] --> R[recompute + compare]
HEAD --> R
classDef ai fill:#a78bfa,color:#04060c;
classDef agent fill:#34d399,color:#04060c;
classDef infra fill:#94a3b8,color:#04060c;
class G,H1,H2,H3 ai;
class HEAD,V agent;
class R infra;
```
## 🚀 Deployment pipeline
```mermaid
flowchart TB
PUSH[push to main] --> CI[CI: node 22, npm ci, lint, build]
CI --> V[vercel --prod]
V --> ALIAS[verified alias]
ALIAS --> CHK{HTTP verify}
CHK -->|200s + counts| DONE[Live]
CHK -->|fail| FIX[fix + redeploy]
FIX --> V
classDef infra fill:#94a3b8,color:#04060c;
classDef ok fill:#34d399,color:#04060c;
classDef caution fill:#fbbf24,color:#04060c;
classDef risk fill:#fb7185,color:#04060c;
class PUSH,CI,V infra;
class ALIAS caution;
class DONE ok;
class CHK,FIX risk;
```
## 🧭 User journey
```mermaid
flowchart LR
LAND[Land on hero] --> SEARCH[Search: pdf]
SEARCH --> OPEN[Open skill page]
OPEN --> SCORE[Read score + seal]
SCORE --> INSTALL[1-line install]
INSTALL --> BUNDLE[Compose bundle]
BUNDLE --> VERIFY[Verify seals]
classDef live fill:#22d3ee,color:#04060c;
classDef ai fill:#a78bfa,color:#04060c;
classDef agent fill:#34d399,color:#04060c;
class LAND,SEARCH live;
class OPEN,SCORE ai;
class INSTALL,BUNDLE,VERIFY agent;
```
---
## 🚀 Quickstart
Zero env vars. No keys. Free forever.
```bash
git clone https://github.com/aniruddhaadak80/skillforge.git
cd skillforge
npm install
npm run dev
```
Open [http://localhost:3000](http://localhost:3000). To install a skill into any agent:
```bash
curl -fsSL "https://skillforge-aniruddha-adaks-projects.vercel.app/api/skills/pdf-miner/skill.md" -o skills/pdf-miner/SKILL.md
```
---
## 🔌 API
| Endpoint | What |
|---|---|
| `GET /api/health` | Service status + catalog size |
| `GET /api/skills?q=&category=&platform=&minSafety=&sort=&limit=` | Scored + sealed catalog |
| `GET /api/skills/:id` | One skill + related + chain head |
| `GET /api/skills/:id/skill.md` | Raw SKILL.md (install target) |
| `POST /api/score` | Score by `{id}` or inline `{skill}` |
| `POST /api/seals/verify` | Replay-verify with `{ids}` |
| `GET/POST /api/mcp` | MCP JSON-RPC: `initialize`, `tools/list`, `tools/call` |
```bash
# Search
curl -s "https://skillforge-aniruddha-adaks-projects.vercel.app/api/skills?q=pdf&sort=score&limit=3"
# Score
curl -s https://skillforge-aniruddha-adaks-projects.vercel.app/api/score -H "Content-Type: application/json" \
-d '{"id":"pr-reviewer"}'
# Verify seals
curl -s https://skillforge-aniruddha-adaks-projects.vercel.app/api/seals/verify -H "Content-Type: application/json" \
-d '{"ids":["pr-reviewer","pdf-miner"]}'
# MCP as an agent would call it
curl -s https://skillforge-aniruddha-adaks-projects.vercel.app/api/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_skills","arguments":{"query":"pdf","limit":3}}}'
```
**Agent setup (`mcp.json`):**
```json
{
"mcpServers": {
"skillforge": {
"url": "https://skillforge-aniruddha-adaks-projects.vercel.app/api/mcp",
"transport": "http-json-rpc"
}
}
}
```
A ready-made copy lives at [`public/mcp.json`](public/mcp.json). Tools: `search_skills`, `get_skill`, `score_skill`, `compose_bundle`, `verify_seal`.
---
## 📁 Project map
```
src/
app/ # 7 routes: / explore skill/[id] compose safety docs + not-found
api/ # health, skills, skills/[id], skill.md, score, mcp, seals/verify
components/ # Nav Footer Hero SkillGraph Ticker SkillCard ScoreBars
# McpConsole InstallTabs SearchExplorer BundleComposer
lib/ # types · fallback (24 sealed skills) · engine (score/search/compose)
# seal (SHA-384 chain) · registry (feeds + merge + seal)
```
**3D decision (one line):** no globe — a planet would be decoration for a skill registry, so the hero is a lightweight interactive 2D skill-dependency network (agent hub → categories → skills) with a static accessible label, zero `three` imports.
---
## 🗺️ Roadmap
**Now — deepen the forge** (more skills, sharper scores):
- [ ] 100 curated skills across 10 categories — wow: every common agent job covered
- [ ] Community skill PR template with auto-score CI comment — wow: contributors see their grade instantly
- [ ] Per-platform install telemetry (opt-in, anonymous) — wow: adopters become real, not seeded
```mermaid
flowchart LR
MORE[100 skills] --> AUTO[auto-score CI]
AUTO --> TEL[opt-in telemetry]
classDef live fill:#22d3ee,color:#04060c;
classDef ai fill:#a78bfa,color:#04060c;
classDef agent fill:#34d399,color:#04060c;
class MORE live;
class AUTO ai;
class TEL agent;
```
**Next — agent autonomy** (agents shop alone, safely):
- [ ] MCP `install_skill` tool returning signed bundles — wow: agents self-provision skills
- [ ] Policy packs (strict / balanced / yolo) gating installs by safety floor — wow: one-click risk posture
- [ ] Skill versioning + diff view between versions — wow: updates you can audit
```mermaid
flowchart LR
INST[install_skill tool] --> POL[policy packs]
POL --> DIFF[version diffs]
classDef agent fill:#34d399,color:#04060c;
classDef caution fill:#fbbf24,color:#04060c;
classDef ai fill:#a78bfa,color:#04060c;
class INST agent;
class POL caution;
class DIFF ai;
```
**Later — ecosystem** (the registry becomes infrastructure):
- [ ] Federated mirrors with cross-signed heads — wow: no single point of trust
- [ ] Skill test-harness: run guardrails against adversarial prompts — wow: safety you can execute
- [ ] Leaderboards + maintainer reputation from downstream usage — wow: quality compounds
```mermaid
flowchart LR
FED[federation] --> HARN[test harness]
HARN --> REP[reputation]
classDef infra fill:#94a3b8,color:#04060c;
classDef risk fill:#fb7185,color:#04060c;
classDef ok fill:#34d399,color:#04060c;
class FED infra;
class HARN risk;
class REP ok;
```
---
## ⚠️ Safety disclaimer
Skills are executable agency: a skill can read files, call APIs, and spend your money. SkillForge scores declared risk and seals records, but **scores are heuristics, not guarantees** — always read the SKILL.md, check the safety number, install least-privilege first, and never paste secrets into a skill. See the [/safety briefing](https://skillforge-aniruddha-adaks-projects.vercel.app/safety).
## 🤝 Contributing
PRs welcome — especially new skills. Read [CONTRIBUTING.md](CONTRIBUTING.md), keep the checklist green, and watch CI auto-comment your skill's grade. Security reports: [SECURITY.md](SECURITY.md).
## 📜 License
MIT — see [LICENSE](LICENSE). Free for humans and agents alike.
## 🙏 Attribution
Live signals: [GitHub REST Search API](https://docs.github.com/en/rest) and [Hacker News Algolia API](https://hn.algolia.com/api) (both keyless). Skill format compatible with the `SKILL.md` convention popularized by Anthropic Agent Skills. Built with Next.js, Tailwind, Framer Motion, Lucide.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues