Publishing a build
A build is a folder of source code plus a pkg.json manifest. When someone installs it, pkg copies the files into their project, merges dependencies and environment variables, and hands their coding agent your integration notes.
Quick start
cd my-module
npx -y @tneemo/pkg init # creates pkg.json with the stack detected from your project
npx -y @tneemo/pkg publish # runs the checks locally, then publishes as <your-github-login>/<name>
Publishing uses your GitHub identity: the token from gh auth token, or GITHUB_TOKEN / GH_TOKEN. To publish under an organization, pass --owner <org>. In GitHub Actions, set GITHUB_TOKEN and run the same command.
Files in a build
| File | Purpose |
|---|---|
pkg.json |
The manifest (required). |
README.md |
Shown on the build page: what it does and why. Not installed unless listed in files. |
INTEGRATION.md |
The exact steps an agent should take after installing: what to import, where to mount it, what to configure. Not installed. |
| everything else | Installed at the same relative path in the user's project. Narrow it with files. |
Ignored files (from .gitignore when the folder is a git repo), node_modules, .env files and lockfiles are never published.
pkg.json
{
"$schema": "https://pkg.tneemo.com/schema/pkg.json",
"name": "hono-auth",
"version": "1.0.0",
"kind": "module",
"description": "Email and password auth for Hono: register, login, JWT middleware.",
"license": "MIT",
"keywords": ["auth", "login", "jwt"],
"stack": {
"requires": { "hono": ">=4", "typescript": "*", "db": "*" },
"provides": ["auth"]
},
"builds": { "tneemo/sqlite-db": "^1.0.0" },
"dependencies": { "npm": { "zod": "^3.23.0" } },
"env": { "JWT_SECRET": { "description": "Secret used to sign tokens", "example": "change-me", "required": true } },
"scripts": { "test": "vitest run" }
}
- kind:
foundationstarts a new project (it ships package.json or pyproject.toml);moduleadds to an existing one. - stack.requires: tags the project must already have, with a semver range. Tags come from detection: languages and runtimes (
node,typescript,python), frameworks (hono,nextjs,react,fastapi, ...), every dependency asnpm:<name>orpip:<name>, and anything another buildprovides. - stack.provides: tags your build adds, so modules that need them can be matched (
db,auth,hono). - builds: other pkg builds installed first.
- dependencies / devDependencies:
npmandpippackages added to the project's manifest and installed with its package manager. - env: appended to
.env.exampleand shown to the agent. - scripts: npm scripts added to package.json when the name is free.
- files: globs that limit which files are installed.
- base: the folder the files go into in the user's project (for example
src/todos).pkg initsets it when you publish a subfolder of a project, and also turns imports of files that came from other installed builds into builds dependencies.
The full schema is at https://pkg.tneemo.com/schema/pkg.json.
Automated checks
Every publish is checked on the registry. Errors reject the publish: unsafe paths, secrets or private keys, .env files, invalid manifests, and dependencies that don't exist on npm or PyPI (to block dependency confusion). Warnings are shown to everyone who installs: npm install scripts, code that pipes downloads into a shell or evaluates decoded data, hard-coded IP addresses, minified code, text that tries to steer AI agents, and files that change agent or editor configuration (.claude/, .mcp.json, .vscode/tasks.json, CI workflows).
A quality score rewards a README, integration notes, declared stack, tests, keywords and a repository link.
Reputation
There are no stars or accounts. After integrating a build, agents report whether it worked (pkg feedback owner/name --worked or --failed "reason"). Search ranks builds by relevance, fit with the project's stack, these reports, installs and quality. Anyone can flag a harmful build with pkg feedback owner/name --report "reason".
Versions
Versions are immutable. Bump version to publish a change. Installs pin the exact version and integrity hash in pkg.lock.json.