Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
17 changes: 17 additions & 0 deletions docs/src/content/docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,23 @@ mkdir -p ~/bin
# then install the binary to ~/bin/apm and add ~/bin to PATH
```

### Binary install fails on older Linux (devcontainers, Debian Bookworm)

On systems with glibc older than 2.39 (e.g., Debian Bookworm with glibc 2.36), the
pre-built binary may fail to run. The installer automatically detects this and falls
back to `pip install`:

```
[!] Binary failed (glibc mismatch). Falling back to pip install...
[+] apm installed via pip
```

No manual action is required. If you prefer to install via pip directly:

```bash
pip install apm-cli
```

### Authentication errors when installing packages

If `apm install` fails with authentication errors for private repositories, ensure you have a valid GitHub token configured:
Expand Down
26 changes: 13 additions & 13 deletions docs/src/content/docs/guides/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,20 @@ When you run `apm install`, APM handles skill integration automatically:
APM downloads packages to `apm_modules/owner/repo/` (or `apm_modules/owner/repo/skill-name/` for subdirectory packages).

### Step 2: Skill Integration
APM copies skills directly to `.github/skills/` (primary), `.claude/skills/`, and `.cursor/skills/` when those directories exist:
APM copies skills to all active target directories. Copilot (`.github/skills/`) is
always active; other targets deploy only when their root directory already exists:

| Package Type | Behavior |
|--------------|----------|
| **Has existing SKILL.md** | Entire skill folder copied to `.github/skills/{skill-name}/` |
| **Has sub-skills in `.apm/skills/`** | Each `.apm/skills/*/SKILL.md` also promoted to `.github/skills/{sub-skill-name}/` |
| **Has existing SKILL.md** | Entire skill folder copied to each active target's `skills/{skill-name}/` |
| **Has sub-skills in `.apm/skills/`** | Each `.apm/skills/*/SKILL.md` also promoted to `skills/{sub-skill-name}/` in each active target |
| **No SKILL.md and no primitives** | No skill folder created |

**Target Directories:**
- **Primary**: `.github/skills/{skill-name}/` — Works with Copilot, Codex, Gemini
- **Compatibility**: `.claude/skills/{skill-name}/` — Only if `.claude/` folder already exists
- **Compatibility**: `.cursor/skills/{skill-name}/` — Only if `.cursor/` folder already exists
- **Compatibility**: `.opencode/skills/{skill-name}/` — Only if `.opencode/` folder already exists
- **Copilot (always)**: `.github/skills/{skill-name}/` — Created automatically; works with Copilot, Codex, Gemini
- **Claude (if `.claude/` exists)**: `.claude/skills/{skill-name}/`
- **Cursor (if `.cursor/` exists)**: `.cursor/skills/{skill-name}/`
- **OpenCode (if `.opencode/` exists)**: `.opencode/skills/{skill-name}/`

### Skill Folder Naming

Expand Down Expand Up @@ -287,15 +288,14 @@ APM automatically detects package types:

## Target Detection

APM decides where to output skills based on project structure:
APM decides where to output skills based on which target directories are present:

| Condition | Skill Output |
|-----------|---------------|
| `.github/` exists | `.github/skills/{skill-name}/SKILL.md` |
| `.claude/` also exists | Also copies to `.claude/skills/{skill-name}/SKILL.md` |
| `.cursor/` also exists | Also copies to `.cursor/skills/{skill-name}/SKILL.md` |
| `.opencode/` also exists | Also copies to `.opencode/skills/{skill-name}/SKILL.md` |
| Neither exists | Creates `.github/skills/` |
| Always | `.github/skills/{skill-name}/SKILL.md` (Copilot, created if absent) |
| `.claude/` exists | Also copies to `.claude/skills/{skill-name}/SKILL.md` |
| `.cursor/` exists | Also copies to `.cursor/skills/{skill-name}/SKILL.md` |
| `.opencode/` exists | Also copies to `.opencode/skills/{skill-name}/SKILL.md` |

Override with:
```bash
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/reference/lockfile-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ The lock file serves four goals:
| Event | Effect on `apm.lock.yaml` |
|-------|----------------------|
| `apm install` (first run) | Created. All dependencies resolved, commits pinned, files recorded. |
| `apm install` (subsequent) | Read. Locked commits reused. New dependencies appended. |
| `apm install` (subsequent) | Read. Locked commits reused. New dependencies appended. File only written if dependencies changed (idempotent -- no `generated_at` churn when content is unchanged). |
| `apm install --update` | Re-resolved. All refs re-resolved to latest matching commits. |
| `apm deps update` | Re-resolved. Refreshes versions for specified or all dependencies. |
| `apm pack` | Enriched. A `pack:` section is prepended to the bundled copy (see [section 6](#6-pack-enrichment)). |
Expand Down
Loading