Token导航 LogoToken导航TokenDH.com
Obs Package Skill logo
开发工具未说明官方级别未说明来源级核验

Obs Package Skill

MCP Server

为Open Build Service提供的智能包维护工具,支持自动扫描、分支、构建诊断和修复循环,适用于软件包维护和版本更新。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
版本控制ShellClaude开发工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Spectro34

提供方

Spectro34

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

obs打包技巧

Claude代码技能 开放构建服务 包装维护。跟踪您的开发项目,查找需要更新的内容,分支包,修复构建,在OBS上验证,并在提交请求之前停止——您可以保持控制。

适用于 osc mcp 如果可用,则回退到 osc CLI。

为什么用这个而不是问克劳德?

Claude代码已经可以运行 osc 命令。但是如果没有这些技能,每一次会话都是从零开始的——克劳德不知道你维护了哪些包,它们是什么版本,上游是什么,预计会出现哪些构建失败,或者你的项目是如何构建的。你每次都会重新解释同样的背景。

这个技能体系给了克劳德一个 为您的包裹提供持久的大脑:

无技能有技能
“我要维护哪些包?”--Claude不知道Registry跟踪所有39个包、它们的生态系统、上游来源
“ansible创建者是最新的吗?”--Claude必须从头开始查找Scanner在30秒内根据PyPI/GitHub/crates.io检查所有包
“修复构建”——Claude读取日志,猜测修复情况诊断表将12种常见故障模式映射到精确修复
15.6版本的构建再次失败——“这是意料之中的吗?”已知问题在会话中持续存在——已标记但未发出警报
克劳德尝试 osc sr 要“完成工作”三层护栏:MCP服务器不能,挂钩挡住它,技能不知道
直接在devel项目上工作始终先分支,提交到您的分支,验证OBS构建
手动版本更新:编辑规范、编辑服务、编辑变更日志、构建、检查、提交自动:读取上游变更日志、更新deps、调整补丁、提交、监视OBS、迭代失败

特性

  • 车队扫描 --并行检查devel项目中的所有包与上游(PyPI、GitHub、Go代理、crates.io)的关系。显示一个包含过时、构建失败、断开链接和CVE警报的仪表板。
  • CVE监控 --查询 OSV 每个包的当前版本的漏洞数据库。如果CVE影响您,它会显示哪个版本修复了它。
  • 自动分支 --如果一个包需要工作,但还不在你的分支中,它会自动从devel分支。这就是OBS的工作流程——不需要确认。
  • 构建诊断修复循环 --承诺OBS,观察 osc results -w 在所有repos完成之前,读取构建日志以查找故障,应用修复程序(缺少deps、补丁模糊、文件列表不匹配、错误的Python构建系统等),重新提交并再次验证。在寻求帮助之前,最多需要5次迭代。
  • 生态系统意识 --知道如何打包Python(pyproject.toml、setuptools、hatchling、flit)、Go(Go_modules、vendor)和Rust(货物打包)。根据规范检测构建系统并应用正确的模式。
  • 每个包上下文 --随着时间的推移,积累关于每个包的知识:存在哪些补丁以及为什么,跳过哪些测试以及为什么,每个仓库的已知构建问题,共同维护者信息。上下文仅在处理该包时加载,不会使会话膨胀。
  • 语境工程 --在处理完一个包后,代理会向其知识库中添加内容。您可以审查和接受/拒绝,就像为代理人自己的记忆批准PR一样。
  • 三层SR护栏 --osc-mcp没有SR工具(不能),PreTool使用挂钩块 osc sr 在执行之前(不会),技能说明说不(知道)。准备就绪后,您可以手动创建提交请求。
  • 自治分支机构承诺 --代理显示差异以提高透明度,但会立即提交到您的分支。真正的验证是OBS构建结果,而不是人工审查差异。唯一的手动门是SR。

快速开始

先决条件

  1. 振荡 --已安装并配置了凭据
   sudo zypper install osc          # openSUSE/SUSE
   osc -A https://api.opensuse.org ls   # configure credentials
  1. 克劳德代码CLI、桌面或IDE扩展
  1. osc mcp _(可选,推荐)_ — 从源代码构建

单线设置

git clone https://github.com/Spectro34/obs-package-skill.git
cd obs-package-skill
bash setup.sh

安装脚本:

  1. 检查先决条件(osc 已安装和配置)
  2. 安装技能、扫描脚本和安全挂钩
  3. 提示您输入OBS-devel项目和用户名
  4. 发现所有包并创建注册表

您还可以传递参数以跳过提示:

bash setup.sh --project systemsmanagement:ansible --user myuser
bash setup.sh --skip-init   # install skills + hook only, set up packages later

手动安装

如果你喜欢一步一步地做:

# Skills + scripts
mkdir -p ~/.claude/skills/obs-package ~/.claude/skills/obs-agent
cp skill/SKILL.md ~/.claude/skills/obs-package/SKILL.md
cp skill/AGENT.md ~/.claude/skills/obs-agent/SKILL.md
cp scripts/*.sh ~/.claude/skills/obs-agent/
chmod +x ~/.claude/skills/obs-agent/*.sh

# Safety hooks
mkdir -p ~/.claude/hooks
cp hooks/block-osc-sr.sh  ~/.claude/hooks/block-osc-sr.sh
cp hooks/block-secrets.sh ~/.claude/hooks/block-secrets.sh
chmod +x ~/.claude/hooks/block-osc-sr.sh ~/.claude/hooks/block-secrets.sh

# Add hooks to settings (merge if you have existing hooks)
# See settings-example.json for the full format

添加 ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "bash ~/.claude/hooks/block-osc-sr.sh",  "timeout": 3 },
          { "type": "command", "command": "bash ~/.claude/hooks/block-secrets.sh", "timeout": 3 }
        ]
      },
      {
        "matcher": "Read",
        "hooks": [
          { "type": "command", "command": "bash ~/.claude/hooks/block-secrets.sh", "timeout": 3 }
        ]
      }
    ]
  }
}

初始化包注册表:

bash ~/.claude/skills/obs-agent/init-registry.sh \
  --project systemsmanagement:ansible \
  --user your-obs-username

可选:添加osc-mcp

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "osc-mcp": {
      "type": "stdio",
      "command": "/path/to/osc-mcp",
      "args": []
    }
  }
}

不要将凭据放入MCP配置中--osc-MCP从中读取 ~/.config/osc/oscrc 或自动设置系统密钥环。

用法

扫描您的包裹

> scan my packages

显示devel项目中所有包的仪表板:

## Package Dashboard — 2026-03-28
## Devel: systemsmanagement:ansible (39 packages)

### Outdated (2)
| Package         | OBS     | Upstream | Branched? | Action       |
|-----------------|---------|----------|-----------|--------------|
| ansible-creator | 25.12.0 | 26.3.2   | no        | Branch + bump|
| python-libtmux  | 0.54.0  | 0.55.0   | no        | Branch + bump|

### Build Failures (3)
| Package          | TW        | 15.6         | Branched? | Known? |
|------------------|-----------|--------------|-----------|--------|
| molecule-plugins | succeeded | unresolvable | yes       | yes    |
| python-ruamel    | succeeded | failed       | yes       | no     |

### CVE Alerts (0)

### Up to Date (34)
ansible-lint, ansible-navigator, ansible-runner, ...

处理一个包

> work on python-ruamel.yaml

代理加载包的上下文文件,并将其交给工作技能:

  1. 读取规格、变更日志、上游变更、构建日志
  2. 诊断故障(例如,错误 .dist-info SLE路径15)
  3. 应用修复程序
  4. 自主向您的分支机构承诺
  5. 手表 osc results -w 直到所有6个repos完成
  6. 如果有任何失败,读取日志、修复、重新提交——最多5次
  7. 报告:“所有构建均已通过。运行 osc sr 当准备好。"

如果包尚未分支,则首先从devel分支。

教它预期的失败

> molecule failing on 15.6 is expected, those repos don't have ansible-navigator

已保存到包的已知问题。未来的扫描显示它是“已知的”,而不是“需要关注”。

复习所学内容

> review context

显示对包知识的拟议添加。接受或拒绝每一个。

安排自动扫描

Claude Code可以使用以下命令在会话中按cron计划运行提示 /schedule 技能。预定的提示会像任何正常消息一样触发obs代理技能——所有安装的技能都是可用的。

> /schedule create --cron "3 8 * * 1" --prompt "obs scan — report outdated packages, CVE alerts, and build failures that aren't known issues. Keep it brief."

当您的Claude Code会话正在运行时,它会在每周一早上8点左右触发。提示与obs代理触发器(“obs扫描”)匹配,因此技能可以使用完整的仪表板来处理它。

其他有用的时间表:

# Daily CVE + outdated check
> /schedule create --cron "7 7 * * *" --prompt "scan my packages — only report CVE alerts and newly outdated packages, skip build status"

# Durable schedule (survives session restarts, saved to .claude/scheduled_tasks.json)
> /schedule create --cron "3 8 * * 1" --durable --prompt "obs scan — full dashboard"

注意:非持久计划会在7天后自动过期,并且仅在REPL空闲时(而不是在对话中)才会触发。使用 --durable 对于应该在会话中生存的时间表。

管理时间表:

> /schedule list       # see all active schedules
> /schedule delete ID  # remove a schedule

运作原理

~/.claude/
├── obs-packages.json                    # What you maintain (auto-generated)
├── obs-packages/
│   └── context/                         # Per-package knowledge (grows over time)
│       ├── ansible-creator.md
│       └── molecule.md
├── hooks/
│   ├── block-osc-sr.sh                  # Blocks submit requests
│   └── block-secrets.sh                 # Blocks reads/commands that expose secrets
└── skills/
    ├── obs-agent/                       # Fleet management
    │   ├── SKILL.md                     # Scan, track, triage, context
    │   ├── scan-packages.sh             # Parallel scanner (OBS + upstream + CVE)
    │   ├── init-registry.sh             # First-run package discovery
    │   └── generate-context.sh          # Per-package context generator
    └── obs-package/                     # Single-package worker
        └── SKILL.md                     # Full workflow: context → fix → build → verify

工作流程

"scan packages"  →  obs-agent
                       │
                  scan-packages.sh
                  (checks 39 packages in ~30s)
                       │
                  Dashboard: "3 need attention"
                       │
              "work on python-ruamel.yaml"
                       │
                  Not branched? → osc branch
                       │
                  obs-package skill
                  Phase 0: gather context
                  Phase 1: make changes
                  Phase 2: local pre-flight (optional)
                  Phase 3: commit → osc results -w → diagnose → fix → repeat
                  Phase 4: all green → "run osc sr when ready"

护栏

三个独立的层防止意外提交请求:

机制可以绕过吗?
osc mcp服务器二进制文件中不存在SR创建工具
PreTool使用挂钩block-osc-sr.sh 击杀 osc sr 执行前的命令
技能指导告诉克劳德在承诺后停止软,但有两个硬层支持

分支提交是自主的——代理向您的分支提交并通过OBS构建进行验证。唯一的手动步骤是在您满意时创建提交请求。

凭证安全

此项目中未存储凭据。身份验证由以下人员处理:

  • osc CLI:读取 ~/.config/osc/oscrc (配置过程中 osc 设置)
  • osc-mcp:从oscrc、内核密钥环或D-Bus特勤局读取
  • .gitignore 排除 obs-packages.jsonobs-packages/ 防止意外提交用户特定的数据

秘密编辑钩子

hooks/block-secrets.sh 是一个PreToolUse护栏,防止秘密进入克劳德的上下文。它着火了 两者 BashRead 并拒绝(退出2)会暴露凭据的操作:

类别
oscrc证书cat ~/.oscrc, osc config --dump[-full]
SSH私钥读取 ~/.ssh/id_*, *.pem, *.key, id_rsa/id_ed25519/id_ecdsa/id_dsa (但允许 *.pub)
GPG机密材料gpg --export-secret-keys, --export-secret-subkeys,阅读下面 ~/.gnupg/private-keys-v1.d/
Shell凭据文件~/.netrc, ~/.authinfo
云凭据~/.aws/credentials, ~/.config/gh/hosts.yml
内联HTTP身份验证curl/wget 随着 Authorization: 标题或 -u user:pass
凭证环境变量env/printenv 结合 TOKEN, PASSWORD, API_KEY, AWS_SECRET, GH_TOKEN等等。
Git凭据泄漏git config --get *.password / *.token

为什么是预工具使用而不是后工具使用: Claude Code的PostToolUse钩子无法重写工具输出-- additionalContext 仅附加,以及 decision: "block" 中止整个任务。真正编校的唯一方法是在执行read/命令之前停止它。因此,PreToolUse阻断器是秘密遏制的规范机制。

项目结构

.
├── README.md                    # This file
├── setup.sh                     # One-line setup script
├── skill/
│   ├── SKILL.md                 # Single-package workflow (the worker)
│   └── AGENT.md                 # Fleet management (scan, track, triage)
├── scripts/
│   ├── scan-packages.sh         # Parallel package scanner (OBS + upstream + CVE)
│   ├── init-registry.sh         # First-run: discover all packages, create registry
│   └── generate-context.sh      # Generate context file for one package
├── hooks/
│   ├── block-osc-sr.sh          # PreToolUse hook — blocks submit requests
│   └── block-secrets.sh         # PreToolUse hook — blocks reads/commands that expose secrets
├── registry-example.json        # Example registry template
├── context-example.md           # Example per-package context file
├── mcp-config-example.json      # Example .mcp.json for osc-mcp
├── settings-example.json        # Example Claude Code settings with hook
└── .gitignore                   # Excludes user-specific data

许可证

阿帕奇-2.0

目录标签

目录标签

版本控制ShellClaude开发工具本地部署包维护自动化构建CVE监控

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP