AgentSecOps / AgentSecOps/SecOpsAgentKit

[BUG] Root marketplace.json skill source paths missing skills/ prefix — all 7 plugins load 0 skills

Đang mở
#32 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
209
Fork
39
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

**Title:** `[BUG] Root marketplace.json skill source paths missing `skills/` prefix — all 7 plugins load 0 skills

**Body:**

## Summary

The repo-root marketplace manifest `.claude-plugin/marketplace.json` declares every skill `source` path relative to the **repo root** (e.g. `./appsec/sast-semgrep`), but the skills actually live under `skills/` (e.g. `skills/appsec/sast-semgrep`). As a result Claude Code resolves all 31 source paths to non-existent directories, every one of the 7 plugins loads **0 skills**, and `/doctor` reports setup errors (14 in my install).

## Environment

- Claude Code `2.1.165`
- Marketplace commit `6e25a4b` (`feat(tooling): add validate_skill.py, pre-commit hook, fix offsec docs`)
- Repo: `AgentSecOps/SecOpsAgentKit`

## Evidence

`.claude-plugin/marketplace.json` (repo root) declares:

```json
{
"name": "appsec-skills",
"skills": [
"./appsec/sast-semgrep",
"./appsec/sast-bandit",
"./appsec/dast-zap"
]
}
```

But the actual directory layout is:

```
SecOpsAgentKit/
├── .claude-plugin/marketplace.json <-- broken paths (./appsec/...)
├── skills/
│ ├── .claude-plugin/marketplace.json <-- correct paths (resolve OK)
│ └── appsec/
│ ├── sast-semgrep/ <-- skills really here
│ ├── sast-bandit/
│ └── ...
```

Programmatic check across the root manifest:

```
paths missing skills/ prefix (broken): 31
paths OK: 0
plugins total: 7
```

Notably, the **second** manifest at `skills/.claude-plugin/marketplace.json` has paths that DO resolve (relative to `skills/`). The root copy appears to be a stale/incorrect duplicate.

## Impact

All 5 enabled plugins (`devsecops`, `secsdlc`, `compliance`, `incident-response`, `threatmodel`) plus `appsec` and `offsec` load no skills and surface errors in `/doctor`. Users must disable the plugins as a workaround.

## Suggested fix

Either:
1. Prefix every `source`/`skills` path in `.claude-plugin/marketplace.json` with `skills/` (e.g. `./skills/appsec/sast-semgrep`), **or**
2. Remove the duplicate root `.claude-plugin/marketplace.json` and make `skills/.claude-plugin/marketplace.json` the canonical manifest.

The existing `validate_skill.py` / pre-commit hook (added in `6e25a4b`) could be extended to assert that every declared `source` path resolves to an existing directory, which would have caught this.

## Workaround

Disable the affected plugins in `~/.claude/settings.json` `enabledPlugins` until fixed.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.