Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion .github/meta/commit.txt
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
release: v0.5.20
refactor: rename `Kit` → `Pack` for clearer vendor-distribution semantics

Renames the extension-system primitive from "Kit" to "Pack" before any vendor
content has shipped publicly. "Pack" reads more naturally ("skill pack" is
already common language), differentiates from Claude Code's "plugin" noun,
and avoids the generic-SDK connotation of "kit".

Scope of rename:
- `Kit` namespace/types → `Pack` (runtime, CLI, config, telemetry)
- `KIT.yaml` → `PACK.yaml` file convention
- `.opencode/kits/` → `.opencode/packs/`; `active-kits` → `active-packs`
- Nested `SkillPack` type → `SkillGroup` / `skill_packs` field → `skill_groups`
to resolve the "pack contains packs" nesting collision
- Telemetry events `kit_*` → `pack_*`
- File moves: `src/kit/` → `src/pack/`; `cli/cmd/kit.ts` → `cli/cmd/pack.ts`;
`docs/{configure,develop}/kits.md` → `packs.md`
- CLI command group: `altimate-code kit ...` → `altimate-code pack ...`

No behavior change — pure rename + internal variable-shadow fix in
`allSkillsFromGroups` (inner loop variable `pack` → `group`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
939 changes: 939 additions & 0 deletions docs/PARTNER_ECOSYSTEM_PLAN.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions docs/docs/configure/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ Set up your warehouses, LLM providers, and preferences. For agents, tools, skill

[:octicons-arrow-right-24: MCP Servers](mcp-servers.md) · [:octicons-arrow-right-24: ACP Support](acp.md)

- :material-package-variant:{ .lg .middle } **Packs**

---

Bundles of skills, MCP servers, and instructions. Activate a pack to get a complete development setup for dbt, Snowflake, Dagster, and more.

[:octicons-arrow-right-24: Packs](packs.md)

- :material-palette:{ .lg .middle } **Appearance**

---
Expand Down
225 changes: 225 additions & 0 deletions docs/docs/configure/packs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
# Packs

Packs bundle skills, MCP servers, and instructions into a single activatable unit. Instead of configuring each piece separately, activate a pack to get a complete development setup.

## Quick Start

```bash
# List available packs
altimate-code pack list

# Auto-detect packs for your project
altimate-code pack detect

# Activate a pack
altimate-code pack activate dbt-snowflake

# Check active packs
altimate-code pack status

# Deactivate
altimate-code pack deactivate dbt-snowflake
```

## Installing Packs

Install packs from GitHub repositories or local paths:

```bash
# From GitHub
altimate-code pack install AltimateAI/data-engineering-skills

# From local path
altimate-code pack install ./my-packs

# Install globally (available in all projects)
altimate-code pack install AltimateAI/data-engineering-skills --global
```

## PACK.yaml Format

Packs are defined in `PACK.yaml` files:

```yaml
name: my-pack
description: What this pack configures
version: 1.0.0

# Skills to install
skills:
- source: "owner/repo"
select: ["skill-a", "skill-b"]

# MCP servers to configure
mcp:
server-name:
type: stdio
command: ["uvx", "my-mcp-server"]
env_keys: ["API_KEY"]
description: "Server description"

# Instructions for every conversation
instructions: |
Project-specific conventions and rules.

# Auto-detection rules
detect:
- files: ["config.yaml"]
message: "Detected my-tool — activate pack?"
```

## What `pack activate` Does

When you activate a pack, it:

1. **Installs skills** from referenced repositories into `.opencode/skills/`
2. **Configures MCP servers** by merging entries into your project's config file
3. **Creates instruction files** at `.opencode/instructions/pack-<name>.md`
4. **Registers the pack** as active in `.opencode/active-packs`

All changes are reversible with `pack deactivate`.

## Creating Your Own Pack

```bash
altimate-code pack create my-team-standards
```

This scaffolds `.opencode/packs/my-team-standards/PACK.yaml` with a template. Edit it, then activate:

```bash
altimate-code pack activate my-team-standards
```

### Validating

Check your pack for issues before sharing:

```bash
altimate-code pack validate my-team-standards
```

## Multiple Active Packs

You can activate multiple packs simultaneously. Their MCP servers are merged and instruction files coexist:

```bash
altimate-code pack activate dbt-snowflake
altimate-code pack activate my-team-standards
altimate-code pack status # shows both
```

## Trust Tiers

| Tier | Description |
|------|-------------|
| `built-in` | Ships with Altimate Code, maintained by the team |
| `verified` | Published by official vendors, reviewed |
| `community` | Created by anyone, use at your discretion |

## Pack Locations

Packs are discovered from:

1. **Project**: `.opencode/packs/` and `.altimate-code/packs/`
2. **Global**: `~/.config/altimate-code/packs/`
3. **Config paths**: `packs.paths` in your config file
4. **Installed**: `~/.local/share/altimate-code/packs/`

## Remote Registry

`pack search` hits a remote registry index (JSON) so you can browse packs beyond the ones installed locally. The default registry is [AltimateAI/data-engineering-skills](https://github.com/AltimateAI/data-engineering-skills) but you can point at your own — useful for internal pack catalogs.

```jsonc
// opencode.json
{
"packs": {
"registry": "https://packs.internal.acme.com/registry.json"
}
}
```

Or via env var for ad-hoc override: `ALTIMATE_CODE_PACK_REGISTRY=https://...`.

**Caching:** results are cached for 24 hours at `~/.cache/altimate-code/pack-registry-cache.json`. Pass `--refresh` to bypass the cache. If the registry is unreachable, `pack search` falls back to the cache (if any) and flags results as stale.

## Trust & Integrity

When you `pack install`, altimate-code writes a `manifest.json` with a SHA256 hash of the pack content. On every load, the hash is re-verified — mismatches surface as an `INTEGRITY WARNING` at activate time.

Tier claims (`built-in`, `verified`) in `PACK.yaml` are cross-checked against an allowlist. Claims that aren't approved are silently **downgraded to `community`** and the CLI shows a `TIER DOWNGRADE` notice. This means: **installing a pack that claims "verified" does not actually grant it verified status** — only the maintained allowlist does.

For local development or internal distribution, set allowlist overrides:

```bash
export ALTIMATE_CODE_VERIFIED_PACKS=my-pack,other-pack
export ALTIMATE_CODE_BUILTIN_PACKS=internal-pack
```

Full plumbing (signing, PKI) is out of scope for this release — the current mechanism catches accidental corruption and naive tampering, not a determined attacker with write access.

## CLI Reference

| Command | Description |
|---------|-------------|
| `pack list` | List all available packs |
| `pack list --json` | JSON output for scripting |
| `pack list --detect` | Show only project-matching packs |
| `pack create <name>` | Scaffold a new pack |
| `pack show <name>` | Display full pack details |
| `pack install <source>` | Install from GitHub or local path |
| `pack activate <name>` | Install skills, configure MCP, enable |
| `pack activate <name> --yes` | Skip confirmation prompt |
| `pack deactivate <name>` | Remove from active packs, clean up |
| `pack remove <name>` | Delete an installed pack |
| `pack detect` | Find packs matching current project |
| `pack search [query]` | Search the pack registry (24h cached) |
| `pack search --refresh` | Bypass the cache and re-fetch the registry |
| `pack status` | Show active packs |
| `pack validate [name]` | Validate pack format and references |

## Sharing Packs

Share packs via Git repositories. The recommended structure:

```
my-packs/
packs/
pack-a/PACK.yaml
pack-b/PACK.yaml
README.md
```

Others install with: `altimate-code pack install owner/my-packs`

## Available Packs

See [data-engineering-skills](https://github.com/AltimateAI/data-engineering-skills) for the official pack registry.

## Roadmap

The pack system is actively evolving based on community feedback. Here's what's planned:

### Coming Soon

| Feature | Description | Status |
|---------|-------------|--------|
| **`pack switch`** | Switch between packs in one command (deactivate all, activate one) | Planned |
| **Pack inheritance** | `extends: base-pack` to share conventions across packs | Planned |
| **`pack update`** | Pull newer versions of installed packs from source | Planned |
| **Registry expansion** | More built-in packs for BigQuery, Databricks, Airflow, Dagster | In progress |
| **`pack enforce`** | CI command that fails if required packs are not active | Planned |

### Future

| Feature | Description |
|---------|-------------|
| **Auto-activation** | Automatically suggest or activate packs when detection rules match on project open |
| **Pack locking** | Prevent deactivation of compliance-critical packs without admin override |
| **Conflict detection** | Warn when two active packs have contradictory instructions |
| **Pack analytics** | Activation counts and skill usage metrics for pack authors |
| **MCP tool filtering** | Allow packs to expose only specific tools from an MCP server |

### Contributing to the Roadmap

Have a feature request? [Open an issue](https://github.com/AltimateAI/altimate-code/issues) with the `pack` label, or contribute directly to the [data-engineering-skills](https://github.com/AltimateAI/data-engineering-skills) repo.
20 changes: 19 additions & 1 deletion docs/docs/develop/ecosystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ altimate has a growing ecosystem of plugins, tools, and integrations.
|---------|------------|
| `@altimateai/altimate-code` | CLI and TUI |
| `@altimateai/altimate-code-sdk` | TypeScript SDK |
| `@altimateai/altimate-code-plugin` | Plugin development kit |
| `@altimateai/altimate-code-plugin` | Plugin development pack |

## Integrations

Expand All @@ -19,6 +19,24 @@ altimate has a growing ecosystem of plugins, tools, and integrations.
- **MCP**: Model Context Protocol servers
- **ACP**: Agent Communication Protocol for editors

## Packs

Packs bundle skills, MCP servers, and instructions into shareable development setups. Anyone can create and distribute packs.

| Pack | Description |
|-----|-------------|
| [dbt-snowflake](https://github.com/AltimateAI/data-engineering-skills/tree/main/packs/dbt-snowflake) | Complete dbt + Snowflake setup |

Browse the [pack registry](https://github.com/AltimateAI/data-engineering-skills/blob/main/registry.json) for more.

### Creating Packs

See the [Pack documentation](../configure/packs.md) for the full guide, or run:

```bash
altimate-code pack create my-pack
```

## Community

- [GitHub Repository](https://github.com/AltimateAI/altimate-code): Source code, issues, discussions
Expand Down
Loading
Loading