{"_id":"@diawest82/openclaw-skill","name":"@diawest82/openclaw-skill","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@diawest82/openclaw-skill","version":"0.1.0","description":"OpenClaw skill for automatic prompt optimization via Fortress Token Optimizer API","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"build":"tsc","test":"jest","lint":"eslint src/","prepublishOnly":"npm run build","typecheck":"tsc --noEmit"},"keywords":["openclaw","clawhub","llm","token-optimization","prompt-optimization","fortress","openai","anthropic","skill"],"author":{"name":"Diawest82"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Diawest82/fortress-optimizer-monorepo.git"},"homepage":"https://fortress-optimizer.com","devDependencies":{"@types/jest":"^29.5.8","@types/node":"^22.0.0","@typescript-eslint/eslint-plugin":"^8.58.1","@typescript-eslint/parser":"^8.58.1","eslint":"^10.2.0","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.3"},"engines":{"node":">=22.0.0"},"_id":"@diawest82/openclaw-skill@0.1.0","gitHead":"eede0e1a37c06e0023ea0a149ddfd5a63f847af3","bugs":{"url":"https://github.com/Diawest82/fortress-optimizer-monorepo/issues"},"_nodeVersion":"22.1.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-3DeQ8cc1djrZWfPzcKXm9Sk8r5L6uz1jnJHBsWZsc6nEYBpwyDhGVe9n4TwCB8qnFhfjuc3dEgJMFjYYyO/KLQ==","shasum":"0049d0c1c99b22678495a2b55967d9fb6a3bc58a","tarball":"https://registry.npmjs.org/@diawest82/openclaw-skill/-/openclaw-skill-0.1.0.tgz","fileCount":19,"unpackedSize":29983,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJ6kJPkgrh+3y9G9MjTcB6saA30a/QieHO8KGdC5yS2AIgfjdn0ZKvLS0x7yBUdUZYvTseL4nV3UgNlRn4mo0yEXc="}]},"_npmUser":{"name":"fortress-optimizer","email":"diallowest@gmail.com"},"directories":{},"maintainers":[{"name":"fortress-optimizer","email":"diallowest@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-skill_0.1.0_1775738721623_0.640596430751216"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-09T12:45:21.536Z","0.1.0":"2026-04-09T12:45:21.803Z","modified":"2026-04-09T12:45:22.080Z"},"maintainers":[{"name":"fortress-optimizer","email":"diallowest@gmail.com"}],"description":"OpenClaw skill for automatic prompt optimization via Fortress Token Optimizer API","homepage":"https://fortress-optimizer.com","keywords":["openclaw","clawhub","llm","token-optimization","prompt-optimization","fortress","openai","anthropic","skill"],"repository":{"type":"git","url":"git+https://github.com/Diawest82/fortress-optimizer-monorepo.git"},"author":{"name":"Diawest82"},"bugs":{"url":"https://github.com/Diawest82/fortress-optimizer-monorepo/issues"},"license":"MIT","readme":"# @fortress-optimizer/openclaw-skill\n\nOpenClaw skill for automatic prompt optimization via the [Fortress Token Optimizer](https://fortress-optimizer.com) API. Reduces token usage by 15-30% without changing meaning.\n\nZero runtime dependencies. Uses native `fetch` (Node 22+).\n\n## Installation\n\n```bash\n# Via ClawHub\nclawhub install fortress-optimizer\n\n# Via npm\nnpm install @fortress-optimizer/openclaw-skill\n```\n\n## Quick Start\n\n```typescript\nimport { registerSkill } from '@fortress-optimizer/openclaw-skill';\n\nconst skill = registerSkill({\n  apiKey: process.env.FORTRESS_API_KEY,\n});\n\n// Use as OpenClaw context engine\nconst { contextEngine, hooks } = skill;\n```\n\n## Standalone Client\n\n```typescript\nimport { FortressClient } from '@fortress-optimizer/openclaw-skill';\n\nconst client = new FortressClient({\n  apiKey: 'fk_your_key_here',\n  baseUrl: 'https://api.fortress-optimizer.com',\n  level: 'balanced',\n  provider: 'openai',\n  timeout: 10_000,\n  gracefulDegradation: true,\n  minPromptLength: 50,\n});\n\nconst result = await client.optimize('Your prompt text here...');\nconsole.log(result.tokens.savings_percentage); // e.g. 23\nconsole.log(result.optimization.optimized_prompt);\n```\n\n## Configuration\n\nSet via constructor options or environment variables:\n\n| Option | Env Variable | Default | Description |\n|--------|-------------|---------|-------------|\n| `apiKey` | `FORTRESS_API_KEY` | (required) | Your API key from fortress-optimizer.com |\n| `baseUrl` | `FORTRESS_BASE_URL` | `https://api.fortress-optimizer.com` | API endpoint |\n| `level` | `FORTRESS_LEVEL` | `balanced` | `conservative`, `balanced`, or `aggressive` |\n| `provider` | `FORTRESS_PROVIDER` | `openai` | LLM provider hint |\n| `timeout` | - | `10000` | Request timeout in ms |\n| `gracefulDegradation` | - | `true` | Return original prompt on API failure |\n| `minPromptLength` | - | `50` | Skip optimization for short prompts |\n\n## Optimization Levels\n\n- **conservative** - Light optimization, ~5% savings. Safe for all prompts.\n- **balanced** - Deduplication + compression, ~15% savings. Good default.\n- **aggressive** - Maximum optimization, ~30% savings. May rephrase.\n\n## Architecture\n\n```\nYour App\n  |\n  v\nOpenClaw Skill (this package)\n  |-- contextEngine  --> ingest/assemble flow\n  |-- hooks          --> before-tool-call interception\n  |-- client         --> HTTP calls to Fortress API\n  |\n  v\nFortress API (api.fortress-optimizer.com)\n  |-- phrase compression\n  |-- semantic deduplication\n  |-- meta-removal\n  |-- sentence optimization\n```\n\n## Security\n\n- HTTPS enforced (rejects non-HTTPS URLs except localhost)\n- Response validation against prompt injection attacks\n- Bearer token authentication\n- No data stored client-side\n\n## API\n\n### `registerSkill(config?)`\n\nFactory that returns `{ contextEngine, hooks }` for OpenClaw integration.\n\n### `FortressClient`\n\n- `optimize(prompt)` - Optimize a prompt, returns `OptimizeResponse`\n- `getUsage()` - Get token usage stats, returns `UsageResponse`\n- `healthCheck()` - Check API availability, returns `boolean`\n\n### `FortressContextEngine`\n\nImplements the OpenClaw `ContextEngine` interface:\n\n- `bootstrap()` - Health check (non-fatal on failure)\n- `ingest(content)` - Queue content for optimization\n- `assemble()` - Optimize and return result\n- `afterTurn(stats?)` - Accumulate usage statistics\n- `getStats()` - Get cumulative optimization stats\n\n### `createBeforeToolCallHook(client, config)`\n\nReturns a hook that intercepts tool calls with prompt-like arguments and optimizes them before execution.\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-1c1e9831a837a99c97100ea3cb8b38d6"}