AgentSecOps / AgentSecOps/SecOpsAgentKit
[BUG] Root marketplace.json skill source paths missing skills/ prefix — all 7 plugins load 0 skills
- 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á.