Thanks for considering contributing. Silo is the knowledge store for the grainulation ecosystem -- it indexes, searches, and manages claim packs across sprints.
git clone https://github.com/grainulation/silo.git
cd silo
node bin/silo.js --helpNo npm install needed -- silo has zero dependencies.
Open an issue with:
- What you expected
- What happened instead
- Your Node version (
node --version) - Steps to reproduce
Open an issue describing the use case, not just the solution. "I need X because Y" is more useful than "add X."
- Fork the repo
- Create a branch (
git checkout -b fix/description) - Make your changes
- Run the tests:
node test/basic.test.js - Commit with a clear message
- Open a PR
Packs live in packs/. Each is a JSON file containing curated claims for a domain. To add one:
- Create
packs/your-domain.json - Follow the schema of existing packs (see
packs/architecture.jsonfor reference) - Include claims with proper typing and evidence tiers
- Add a test case covering pack loading
bin/silo.js CLI entrypoint -- dispatches subcommands
lib/index.js Core library -- pack management and resolution
lib/store.js Persistent claim storage engine
lib/search.js Full-text and filtered claim search
lib/analytics.js Usage analytics and pack statistics
lib/import-export.js Bulk import/export of claim data
lib/packs.js Knowledge pack loading and validation
lib/serve-mcp.js MCP (Model Context Protocol) server
lib/server.js Local preview server (SSE, zero deps)
lib/templates.js Template rendering for HTML output
packs/ Built-in knowledge packs (JSON)
public/ Web UI -- search and browse interface
site/ Public website (silo.grainulation.com)
test/ Node built-in test runner tests
The key architectural principle: silo is a content-addressable claim store. Claims go in with typed metadata, and come out via search, pack membership, or direct ID lookup. The store is append-friendly and merge-safe.
- Zero dependencies. If you need something, write it or use Node built-ins.
- No transpilation. Ship what you write.
- ESM imports (
import/export). Node 20+ required. - Keep functions small. If a function needs a scroll, split it.
- No emojis in code, CLI output, or pack data.
node test/basic.test.jsTests use Node's built-in test runner. No test framework dependencies.
Follow the existing pattern:
silo: <what changed>
Examples:
silo: add security knowledge pack
silo: fix search ranking for multi-word queries
silo: update import to handle duplicate claim IDs
MIT. See LICENSE for details.