# Adopting kith

This is the shortest path from a fresh checkout to a useful People plan.

## 1. Get the repo

```bash
git clone https://github.com/buberlo/kith.git
cd kith
```

`kith` currently has no runtime dependencies beyond Node 18+.

## 2. Initialize your people directory

The repo includes fictional demo people so the CLI has something to show out of
the box. Before using `kith` for your real network, delete or replace the
non-underscore files in `people/`. Keep `people/_TEMPLATE.md`.

```bash
node bin/kith.mjs init
```

For sensitive local-only records, initialize with a gitignored private folder:

```bash
node bin/kith.mjs init --private
```

The command creates:

- `people/_TEMPLATE.md`
- `people/first-person.md`
- `people/private/` and a `.gitignore` rule when `--private` is used

Existing files are kept as-is.

## 3. Add real people

Edit `people/first-person.md` into someone real, then copy
`people/_TEMPLATE.md` for each additional person.

Keep each filename aligned with the frontmatter `id`:

```text
people/dana-dev.md
```

```yaml
---
id: dana-dev
name: Dana
roles: [developer, devops]
skills:
  - TypeScript (expert)
  - Kubernetes (advanced)
can_help_with:
  - Backend architecture reviews
contact: { via: "Signal" }
---
Prefers async. Good person to ask before an infrastructure decision.
```

Or import contacts into reviewable drafts:

```bash
node bin/kith.mjs import csv contacts.csv
node bin/kith.mjs import vcard contacts.vcf
node bin/kith.mjs import linkedin Connections.csv
```

Imports write to `people/_drafts/` by default, so they are ignored by the normal
query tools until you review and move accepted files into `people/`. Add
`--commit` to write accepted records directly, or `--commit --private` to write
to `people/private/`.

## 4. Validate and query

```bash
node bin/kith.mjs validate
node bin/kith.mjs list
node bin/kith.mjs find kubernetes
node bin/kith.mjs staff "build and deploy a web app, then sell it as a physical product"
```

The `staff` command prints a People plan: who to approach, why they matched,
which needs are uncovered, and a reminder that you decide who to contact.

## 5. Connect an AI agent

### MCP server

Run the local read-only MCP server:

```bash
npm run mcp
```

This repo includes `.mcp.json`, so Claude Code can offer to connect a project
server named `kith`. Other MCP clients can point to:

```bash
node /absolute/path/to/kith/bin/kith-mcp.mjs
```

See [`docs/MCP.md`](docs/MCP.md) for the tool list and client config shape.

### No-server skill

The no-server skill in [`skills/kith/SKILL.md`](skills/kith/SKILL.md) tells an
agent how to read `people/` directly and append a People plan.

## 6. Keep private data private

This repo is meant for a private network. Avoid committing details you do not
want synced:

- Store only channel hints such as `contact: { via: "Signal" }`.
- Put sensitive records under `people/private/` after running `init --private`.
- Keep the repo private unless you have removed personal data.

The data contract is in [`SPEC.md`](SPEC.md).
