{"_id":"@aegis-skills/core","_rev":"7-788bbccab83280143a15c0bd11ce0858","name":"@aegis-skills/core","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@aegis-skills/core","version":"0.1.0","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.1.0","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/kairo-foundation/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"431277d55800a167527f3ae17d44400c606df4f6","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.1.0.tgz","fileCount":244,"integrity":"sha512-tUJo5n2AtafpmYMrREh+4zpche3KAOZXXZgBvu0OSfibjdUaiHIuuFOOslv3H6C1oCRQLAnIvujXZI4I8e0QJQ==","signatures":[{"sig":"MEYCIQCWdXZRb+lCOIbtYtx5dgRDQm27XXhtntjOvGo3OLSMGgIhANjssP/a6/S/r50orIyL8JZ9r+nQCW+DOHikQbo/zkLy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1304328},"main":"src/compiler.js","type":"commonjs","gitHead":"b39c6d44e0dd09e3b1161f47f1e289525b9005c8","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/kairo-foundation/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal skill library for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"^11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1779714758973_0.9060948646127072","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aegis-skills/core","version":"0.1.1","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.1.1","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/kairo-foundation/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"938f0dfe1216d9d4eed61cb931616d6aa99e4683","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.1.1.tgz","fileCount":127,"integrity":"sha512-pRge3iG5EbdARBCsbJtIJ+mUsj4mWWASUDjdEOGtz62PD6u19e5DD1sRt8YkbhAumt8f1k72mWRXjogsM2gRnw==","signatures":[{"sig":"MEUCIEAzxtpkbK/WNBIPIyIV1dAhjtwHKOTABB25aS2ccWjqAiEA7L3tdUCQ6O7vP0oIt6LvvrL0E4rhFzA2QZZoQ3gfzdA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":561283},"main":"src/compiler.js","type":"commonjs","gitHead":"dcc9f32c815ea40d1161621fe4c200c50484ea01","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/kairo-foundation/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal skill library for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"^11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.1_1779716111196_0.3287049796987793","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aegis-skills/core","version":"0.1.2","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.1.2","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/kairo-foundation/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"e6c8447e13496f37263feed488b89750c9f899fe","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.1.2.tgz","fileCount":130,"integrity":"sha512-qZWpnNob3EQ1MW/ZA3HStKGgyDZFlYi9tr2uBxBAU9YqwL+DsBorZ9I69Si0gAwvyvBrBaFas5T7THX3kp5kiA==","signatures":[{"sig":"MEQCIB3mt1lfq4RiL/45AT8JlDDGbeQUhr6qAhRa60aX3NwNAiAuxaLY8grZ+9kCIrtj3bMTDjBLTbOkllsBOQ2X8f1aTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567777},"main":"src/compiler.js","type":"commonjs","gitHead":"2d2ff3a62d8399cb32a5978a32c3b7df16ec1b43","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/kairo-foundation/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal skill library for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"^11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.2_1779717829972_0.051511881374703083","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aegis-skills/core","version":"0.1.3","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.1.3","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/kairo-foundation/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"8c3a173d6a0e2439e992ea5d879df34c6280c1ce","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.1.3.tgz","fileCount":180,"integrity":"sha512-GC756URwLMEr+h/utGioVDdbkWJAToqu9cC4s0fVEgVcw2S4Y6SNN1JwLMuP1LzVB2lliMH7hnPMncwibcXEeA==","signatures":[{"sig":"MEUCIQDWQdxuGMqe8l/QiwbQGEAammPK4vfZKDQ4iyfuqgoKGwIgNqKcYI+vkN1etpajq76KU/DzA1vdKkFvrDpua/UvMfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":902605},"main":"src/compiler.js","type":"commonjs","gitHead":"3b4ee9eefb515a165c27d01bd50c7647a8cbc656","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node bin/aegis.js compile && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/kairo-foundation/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal skill library for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.3_1780297669187_0.8990889785437088","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aegis-skills/core","version":"0.2.0","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.2.0","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/kairo-foundation/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"56b47786c847b66aa766df8f7eccae589e4a23d8","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.2.0.tgz","fileCount":370,"integrity":"sha512-3223ieBFzfOzJwMz7KuQLUIKSXjCi6dDu8qC3I68cuQB1iq6PV6KlEqUadZq/QOAU/QfCgZjJ/hh4BAjj5ognQ==","signatures":[{"sig":"MEYCIQDB3dYK8IKS3SSxApt3mJ9mCd9tJhbNbJWwvs+uFOSVKAIhANbOBE7i2vgG/aTnCbZtadZ5bzRGoAJKG8t5IH69vWAu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1855476},"main":"src/compiler.js","type":"commonjs","gitHead":"413be5e73f5ac89b7d4fcfc0f8332fc8f09d6756","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node bin/aegis.js compile && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/kairo-foundation/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal security skill library (23 skills) for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1787037982931_0.7326415222780498","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aegis-skills/core","version":"0.3.0","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis","threat-intelligence","dlp","ics-security","exposure-management","ctem"],"author":{"name":"Kairo Foundation"},"license":"MIT","_id":"@aegis-skills/core@0.3.0","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"homepage":"https://aegis-skills.vercel.app/","bugs":{"url":"https://github.com/drupadsachania/aegis-skills/issues"},"bin":{"aegis":"bin/aegis.js"},"dist":{"shasum":"b010bd7b185ed1bce72735888bc58c34bf836df6","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-0.3.0.tgz","fileCount":406,"integrity":"sha512-BTiSdUisXC2khWEuP+C++SCTNmEF/CUJEdvNzpIDrcyqHx2i11MGEpoZ9UKJ6r+Uy/x3C9Z7M2O0ONCIV35Z8A==","signatures":[{"sig":"MEUCID4xfL26VDg1IInW+MJJB6GPnqXesu5mMpD1W7MFZybOAiEA59E0E/Uv1sKS8Adg6YCYrOLLj4xQLI6sffW3ZAA9PJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICZQb5W0AJNJvWVRBf9Y30qFbwXkFm9B9JD3DTZCmujLAiEAmUchtMfZVVc4JhA//DXrmfpZNot3+YXfQZ8jKDhc4wA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2063154},"main":"src/compiler.js","type":"commonjs","gitHead":"a3a03ac8549762762209885d8dd585afb41a7416","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node bin/aegis.js compile && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"repository":{"url":"git+https://github.com/drupadsachania/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal security skill library (24 skills) for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1790944784228_0.04022605590273609","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@aegis-skills/core@1.0.0","bin":{"aegis":"bin/aegis.js"},"bugs":{"url":"https://github.com/drupadsachania/aegis-skills/issues"},"dist":{"shasum":"6fc1fef3245116cc87621d18de1771a8f5189cab","tarball":"https://registry.npmjs.org/@aegis-skills/core/-/core-1.0.0.tgz","fileCount":412,"integrity":"sha512-TVPnC9zgKPPyOOyUB0y18TZcSwQ6JWR3ZE3foegpvL3yQDYwiB4vSs4LFHdSrvcH4wNAuq2Cml3lhEbbjBWQ0g==","signatures":[{"sig":"MEYCIQCKVEgIULU29SrxPVp/ZZkH33hfw6mwQdMVLRXtiAVjYAIhAOngG93VvVWeJspK9uXtVZ3XEaOBW369bQ/dIQQxsql4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDIq4zYAUPWz9LIL/LPT1kWy8021DqkvRmFiSpFF4s8zwIgL8PB040guRqblgDtZ9E5aqdgHWbVwbI9XsfSyA/3RN8="}],"unpackedSize":2102339},"main":"src/compiler.js","name":"@aegis-skills/core","type":"commonjs","author":{"name":"Kairo Foundation"},"gitHead":"a3a03ac8549762762209885d8dd585afb41a7416","license":"MIT","scripts":{"dev":"next dev","test":"node bin/aegis.js --version && node bin/aegis.js compile && node -e \"require('./lib/tools/detector').detectAllTools()\" && echo 'Basic tests passed'","build":"next build","start":"next start","test:watch":"jest --watch"},"version":"1.0.0","_npmUser":{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"},"homepage":"https://aegis-skills.vercel.app/","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis","threat-intelligence","dlp","ics-security","exposure-management","ctem","mcp","model-context-protocol"],"repository":{"url":"git+https://github.com/drupadsachania/aegis-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Universal security skill library (24 skills) for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","directories":{},"maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"_nodeVersion":"24.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","next":"^14.2.3","chalk":"^4.1.2","react":"^18.3.1","openai":"6.39.0","inquirer":"^8.2.6","commander":"11.1.0","langsmith":"^0.6.0","react-dom":"^18.3.1","gray-matter":"^4.0.3","better-sqlite3":"^12.10.0","@langchain/core":"^0.3.1","@anthropic-ai/sdk":"0.98.0","@langchain/openai":"^0.3.14","@langchain/anthropic":"^0.3.7","@langchain/langgraph":"^0.2.19","@google/generative-ai":"0.24.1","@supabase/supabase-js":"^2.43.0","@langchain/google-genai":"^0.1.4","@modelcontextprotocol/sdk":"1.31.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","postcss":"^8.5.15","typescript":"6.0.3","@types/node":"25.9.1","tailwindcss":"^3.4.0","@types/react":"19.2.15","autoprefixer":"^10.5.0","node-mocks-http":"^1.14.1","@types/react-dom":"19.2.3","@types/better-sqlite3":"^7.6.8","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.0.0_1790951987578_0.9524427492258905"}}},"time":{"created":"2026-05-25T13:12:38.852Z","modified":"2026-10-02T14:39:48.347Z","0.1.0":"2026-05-25T13:12:39.158Z","0.1.1":"2026-05-25T13:35:11.353Z","0.1.2":"2026-05-25T14:03:50.223Z","0.1.3":"2026-06-01T07:07:49.346Z","0.2.0":"2026-08-18T07:26:23.117Z","0.3.0":"2026-10-02T12:39:44.346Z","1.0.0":"2026-10-02T14:39:47.814Z"},"bugs":{"url":"https://github.com/drupadsachania/aegis-skills/issues"},"author":{"name":"Kairo Foundation"},"license":"MIT","homepage":"https://aegis-skills.vercel.app/","keywords":["skills","claude","chatgpt","cursor","gemini","vscode","security","mitre","threat-analysis","threat-intelligence","dlp","ics-security","exposure-management","ctem","mcp","model-context-protocol"],"repository":{"url":"git+https://github.com/drupadsachania/aegis-skills.git","type":"git"},"description":"Universal security skill library (24 skills) for Claude, ChatGPT, Cursor, Gemini, and VS Code. Install once globally, use everywhere.","maintainers":[{"name":"drupad_sachania","email":"drupad.h.sachania@live.com"}],"readme":"# Themis · Aegis\n\n**Platform-agnostic AI skill compiler and multi-agent threat analysis — built for defenders.**\n\nTwo subsystems, one deployment:\n\n| | Aegis | Themis |\n|---|---|---|\n| **What** | Skill compiler + marketplace + MCP server | LangGraph orchestrator |\n| **Does** | Write once → deploy to any AI platform | Fan-out parallel threat analysis |\n| **Format** | SKILL.md → system prompt / ChatGPT Action / MCP | POST request → structured findings report |\n\n---\n\n## Aegis\n\nAuthor defensive security skills in a single `SKILL.md` file. Aegis compiles it to every platform format — one source, deployed everywhere — and serves the whole library over the Model Context Protocol.\n\n### Skill library — 24 skills across 5 families\n\n| Family | Skills |\n|---|---|\n| **Frameworks** | `mitre-attack` · `mitre-atlas` · `mitre-engage` |\n| **Threat Intel** | `attack-surface-mapping` · `exposure-validation` · `threat-hunting` · `threat-intel-synthesis` · `threat-modeling` |\n| **Response & Analysis** | `digital-forensics` · `malware-analysis` · `reverse-engineering` · `security-operations` |\n| **Domain Defence** | `application-security` · `data-loss-prevention` · `deception-engineering` · `endpoint-security` · `identity-access-management` · `infrastructure-security` · `network-security` · `operational-technology` |\n| **Governance & Risk** | `compliance` · `governance` · `risk-management` · `security-documentation` |\n\nEach skill is a workflow of phases (methodology references) plus a weekly auto-refreshed live-threat-intel feed. Browse them at [aegis-skills.vercel.app](https://aegis-skills.vercel.app/).\n\n### Quick start\n\n```bash\n# Install the CLI\nnpm install -g @aegis-skills/core\n\n# Detect your tools and wire the skills in\naegis init\n\n# Serve the whole library to Claude / Cursor over MCP (see MCP section below)\naegis mcp\n```\n\n### CLI commands\n\n| Command | What it does |\n|---|---|\n| `aegis init` | Detect installed AI tools and inject skill manifests + system prompts |\n| `aegis list` | Show installed skills and their status per tool |\n| `aegis compile [skill]` | Rebuild artifacts from SKILL.md (system prompt, MCP manifest, OpenAI action) |\n| `aegis intel-sync` | Ingest a threat-intel corpus and route it into the skills it affects |\n| `aegis mcp` | Serve the skill library over MCP on stdio for MCP clients |\n\n### Deploying a skill\n\nAfter compilation, three artifacts are generated in `skills/<name>/artifacts/`:\n\n- `system-prompt.txt` — paste into Claude Projects, Gemini Gems, or any chat UI\n- `openai-action.json` — import into ChatGPT GPT Builder → Add Action\n- `mcp-manifest.json` — the legacy static descriptor (prefer the live MCP server below for Claude Desktop / Cursor)\n\n---\n\n## MCP (Model Context Protocol)\n\nAegis speaks MCP in both directions.\n\n### Serve Aegis skills to an MCP client\n\nExpose the library to Claude Desktop, Claude Code, Cursor or any MCP client. Three read-only tools are offered: `list_skills`, `get_skill`, `get_skill_phase`.\n\n**Local (stdio)** — add to your client's MCP config (e.g. `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"aegis\": { \"command\": \"aegis\", \"args\": [\"mcp\"] }\n  }\n}\n```\n\n**Remote (Streamable HTTP)** — a deployed instance serves MCP at `POST /api/mcp`:\n\n```json\n{\n  \"mcpServers\": {\n    \"aegis\": { \"url\": \"https://aegis-skills.vercel.app/api/mcp\" }\n  }\n}\n```\n\nBoth transports serve the same read-only tools and only public skill content.\n\n### Let Themis use external MCP tools\n\nThemis sub-agents can call tools on external MCP servers during analysis, under a deterministic governance boundary — **opt-in and default-deny**. Configure servers in the `THEMIS_MCP_SERVERS` environment variable (a JSON array):\n\n```json\n[\n  {\n    \"id\": \"osint\",\n    \"transport\": \"http\",\n    \"url\": \"https://mcp.internal.example/osint\",\n    \"allowedSkills\": [\"attack-surface-mapping\", \"threat-intel-synthesis\"],\n    \"allowWrite\": false\n  }\n]\n```\n\nGovernance rules, all enforced in code (not by the model):\n\n- **Default-deny.** No config → agents get no external tools. A server is only reachable by the skills in its `allowedSkills`.\n- **Read-only for autonomous agents.** Only tools classified `read` are auto-invoked. `write`/`execute` tools are never run autonomously — they are recorded as **approval requests** (`mcpApprovals` in the response) for a human to run out-of-band, and only when `allowWrite: true`.\n- **Bounded.** Per-run call budget and timeouts; external output is redacted, size-capped, and wrapped so it is treated as data, not instructions.\n\nOn serverless (Vercel) only `http` servers are reachable; `stdio` is for local development.\n\n---\n\n## Themis\n\nAn AI-powered threat analysis engine. Themis accepts a task description and security context, decomposes it into sub-tasks, fans out to specialist skill agents in parallel, applies guardrails to every output, and synthesises a structured findings report.\n\n### Architecture\n\n```\nTask input\n    │\n  validate          — sanitise task + context\n    │\n  decompose         — plan sub-tasks (capped, skill-validated, acyclic)\n    │\n  schedule ─────────┐  — dependency-aware staged dispatch\n    │               │\n  skill-agent (×ready, parallel)   — ReAct agents; each loads its skill phase,\n    │               │                reads peers' findings, and may call governed\n    └───────────────┘                external MCP read tools\n    │  (once nothing is pending)\n  guardrail         — block / flag / pass per finding\n    │\n  synthesise        — reduce to a structured report\n    │\n  audit             — write metadata to SQLite (no findings stored)\n```\n\nEvery request compiles its own graph with its own in-RAM `MemorySaver`, so no run\nstate is shared between requests. Dependent sub-tasks run only after the work they\ndepend on completes, and can read it. Nothing persists beyond the request lifecycle\nexcept a metadata-only SQLite debrief row.\n\n### API\n\n```bash\ncurl -X POST https://your-deployment.vercel.app/api/themis \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"task\": \"Assess the attack surface for a hybrid cloud + OT environment\",\n    \"context\": {\n      \"environments\": [\"enterprise\", \"hybrid\", \"ot\"],\n      \"attackSurfaceTags\": [\"network\", \"lateral-movement\", \"credential-theft\"]\n    }\n  }'\n```\n\nResponse:\n```json\n{\n  \"report\": \"## Findings\\n...\",\n  \"guardrailSummary\": { \"passed\": 3, \"flagged\": 0, \"blocked\": 0 },\n  \"skillTrace\": [\"mitre-attack\", \"deception-engineering\"],\n  \"totalInputTokens\": 12400,\n  \"totalOutputTokens\": 3200,\n  \"durationMs\": 8400,\n  \"threadId\": \"abc-123\",\n  \"mcpApprovals\": [],\n  \"mcpCallCount\": 0\n}\n```\n\n`mcpApprovals` lists any state-changing external tool actions the agents proposed but did **not** run (empty unless external MCP servers are configured); `mcpCallCount` is the number of external read-tool calls made.\n\n**SSE streaming** — pass `Accept: text/event-stream` to receive node-name events as the graph executes. Node content is never included in stream events.\n\n### Other APIs\n\n| Endpoint | Purpose |\n|---|---|\n| `POST /api/audit` | Standards-based compliance audit (CIS, NIST CSF, ISO 27001, SOC 2, PCI-DSS, HIPAA, IEC 62443, NIST 800-53) |\n| `POST /api/exposure` | Exposure validation (CTEM) — exposure, exploitability, impact, detection, remediation and verification as independent states |\n| `POST /api/mcp` | Aegis skill library over MCP (Streamable HTTP) |\n\n### Requirements\n\nAt least one LLM provider API key:\n\n```bash\nANTHROPIC_API_KEY=...      # Claude — preferred\nOPENAI_API_KEY=...         # fallback\nGOOGLE_API_KEY=...         # fallback\n# Also supported: MISTRAL_API_KEY, DEEPSEEK_API_KEY, QWEN_API_KEY, NVIDIA_API_KEY\n```\n\nExternal MCP tools for Themis (optional, opt-in):\n\n```bash\nTHEMIS_MCP_SERVERS='[{\"id\":\"osint\",\"transport\":\"http\",\"url\":\"https://...\",\"allowedSkills\":[\"attack-surface-mapping\"],\"allowWrite\":false}]'\n```\n\nLangSmith tracing (optional):\n\n```bash\nLANGCHAIN_TRACING_V2=true\nLANGCHAIN_API_KEY=...\nLANGCHAIN_PROJECT=themis\n```\n\n---\n\n## Security\n\nKey constraints enforced in the codebase:\n\n- **LLM SDKs server-only.** Provider SDKs are importable only in `lib/themis/provider.ts`. Next.js `serverExternalPackages` enforces this at bundle level.\n- **No findings persistence.** Task content and LLM outputs are never written to any store — not SQLite, not logs, not external services.\n- **Sanitised errors.** All client-facing errors pass through `safeError()` — no stack traces, paths, or model names reach the client.\n- **Sanitised logs.** Loggers receive only metadata (hashes, token counts, durations, skill slugs). No user input or LLM output appears in logs.\n- **Path traversal prevention.** Skill name and phase ID are validated against an allowlist before any file read; phase refs resolve only inside the skill's own directory (with symlink checks).\n- **Governed external tools.** External MCP access is opt-in and default-deny. Autonomous agents auto-invoke only read-classified tools; write/execute are classified conservatively and routed to human approval, never run by the model. The MCP server Aegis exposes is read-only and serves only public skill content.\n\nSee [`docs/TECHNICAL.md`](docs/TECHNICAL.md) for the full security model and data flow.\n\n---\n\n## Development\n\n```bash\nnpm install\ncp .env.local.example .env.local   # add at least one LLM key\nnpm run dev                         # http://localhost:3000\nnpm test                            # 310 tests\nnpm run build                       # production build\n```\n\n---\n\n## Project structure\n\n```\n├── app/api/themis/        # Themis streaming route (App Router)\n├── bin/                   # aegis CLI\n├── components/            # React UI components\n├── docs/                  # Technical documentation\n│   └── TECHNICAL.md\n├── lib/\n│   ├── skill-reader.js    # Aegis skill loader with path traversal protection\n│   └── themis/            # Themis engine\n│       ├── graph/         # LangGraph nodes, state, tools\n│       ├── debrief.ts     # SQLite audit writer\n│       ├── llm-factory.ts # Provider selection\n│       ├── provider.ts    # LLM SDK (server-only)\n│       └── index.ts       # orchestrate() entry point\n├── pages/                 # Next.js pages router (Aegis UI + API)\n├── skills/                # Skill source files + compiled artifacts\n└── styles/globals.css     # Design system\n```\n\n---\n\n## License\n\nMIT © Drupad Sachania\n","readmeFilename":"README.md"}