{"q": "", "lamps": [{"owner": "synsema", "name": "shell", "version": "0.1.0", "official": true, "description": "A shell with a ceiling. Runs one command, without a shell, only if a human-written policy allows it; destructive operations are refused before anything runs, and the refusal comes back as data.", "profile": "native", "caps": "stdout,env=LAMP_*,file.read={dir}/*,exec=<your list>", "tools": ["run", "check", "policy"], "repo": "https://github.com/synsema/lamps/tree/main/shell", "tags": ["shell", "bash", "policy", "exec"], "pulls": 1, "community": false, "promise": ""}, {"owner": "synsema", "name": "git", "version": "0.1.0", "official": true, "description": "Read the history, never rewrite it: status, log, diff, show, blame, branches. A caller value can never become a flag; there is no push or reset because there is no way to express them.", "profile": "native", "caps": "stdout,env=LAMP_*,exec=git", "tools": ["status", "log", "diff", "show", "blame", "branches", "remotes"], "repo": "https://github.com/synsema/lamps/tree/main/git", "tags": ["git", "repo", "history"], "pulls": 2, "community": false, "promise": ""}, {"owner": "synsema", "name": "npm-deps", "version": "0.1.0", "official": true, "description": "Outdated, deprecated and vulnerable dependencies in package.json, in as few tokens as possible. Reads the project, asks the registry only its small endpoints, never runs npm.", "profile": "native", "caps": "stdout,env=LAMP_*,file.read={root}/*,net=registry.npmjs.org", "tools": ["outdated", "vulns", "info"], "repo": "https://github.com/synsema/lamps/tree/main/npm-deps", "tags": ["npm", "dependencies", "security", "registry"], "pulls": 1, "community": false, "promise": ""}, {"owner": "synsema", "name": "skills", "version": "0.1.0", "official": true, "description": "Find, validate and read agent skills (SKILL.md folders) before an agent loads them: frontmatter contract, name/folder match, size, broken references. Read one section at a time.", "profile": "native", "caps": "stdout,env=LAMP_*,file.read={root},file.read={root}/*", "tools": ["list", "check", "read"], "repo": "https://github.com/synsema/lamps/tree/main/skills", "tags": ["skills", "agents", "review"], "pulls": 1, "community": false, "promise": ""}, {"owner": "synsema", "name": "sql", "version": "0.1.0", "official": true, "description": "A database the agent can read and cannot damage: one statement, SELECT/WITH/EXPLAIN only, no write verbs, LIMIT enforced, SQLite opened read-only at the driver. SQLite files and Postgres/MySQL URLs.", "profile": "native", "caps": "stdout,env=LAMP_*,db={root}/*", "tools": ["tables", "schema", "query", "explain"], "repo": "https://github.com/synsema/lamps/tree/main/sql", "tags": ["db", "sql", "sqlite", "postgres"], "pulls": 1, "community": false, "promise": ""}, {"owner": "synsema", "name": "http", "version": "0.1.0", "official": true, "description": "Fetch from an allowlist of hosts and get text back, not markup: HTML reduced to readable text, JSON narrowed to a dotted path, everything clipped. Twelve hosts by default; one line to add another.", "profile": "pure", "caps": "stdout,env=LAMP_*,net=<twelve hosts>", "tools": ["get", "json", "head", "hosts"], "repo": "https://github.com/synsema/lamps/tree/main/http", "tags": ["http", "fetch", "docs", "api"], "pulls": 1, "community": false, "promise": ""}]}