Add Osaurus tool target + document the division contract (#603)

Tooling: add Osaurus (Anthropic Agent-Skills SKILL.md format) as a conversion
and install target, wired into convert.sh (convert_osaurus + dispatch/valid/all/
parallel lists, --osaurus flag) and install.sh (detect/label/dest/install_osaurus
+ dispatch). Generated output lands in integrations/osaurus/agency-*/SKILL.md and
is gitignored like every other tool's output (regenerate via convert.sh osaurus).

Docs/guardrails — make the division contract discoverable, since it lived only
in scattered script comments and tripped up multiple contributors:
- CONTRIBUTING.md: complete the division list to all 16 (was missing academic/
  gis/sales) and document that divisions.json is the source of truth (CI-checked
  by check-divisions.sh), how to propose a new division, and that strategy/
  (NEXUS playbooks) and integrations/ (generated output) are NOT divisions.
- install.sh: correct the stale "sync with convert.sh / lint-agents.sh" comment —
  install.sh intentionally keeps strategy/ in AGENT_DIRS (filtered at scan time),
  so it is deliberately NOT the same set as the other two.
- .gitignore: ignore integrations/osaurus/agency-*/ (the osaurus output was the
  one tool whose generated files weren't excluded).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Michael Sitarzewski
2026-06-21 15:45:50 -05:00
committed by GitHub
parent 93f3c5f818
commit f56a217945
4 changed files with 83 additions and 11 deletions
+33 -4
View File
@@ -20,6 +20,7 @@
# qwen — Qwen Code SubAgent files (~/.qwen/agents/*.md)
# kimi — Kimi Code CLI agent files (~/.config/kimi/agents/)
# codex — Codex custom agent TOML files (~/.codex/agents/*.toml)
# osaurus — Osaurus skill files (~/.osaurus/skills/<name>/SKILL.md)
# all — All tools (default)
#
# Output is written to integrations/<tool>/ relative to the repo root.
@@ -73,7 +74,7 @@ AGENT_DIRS=(
# --- Usage ---
usage() {
sed -n '3,26p' "$0" | sed 's/^# \{0,1\}//'
sed -n '3,27p' "$0" | sed 's/^# \{0,1\}//'
exit 0
}
@@ -130,6 +131,33 @@ ${body}
HEREDOC
}
convert_osaurus() {
local file="$1"
local name description slug outdir outfile body
name="$(get_field "name" "$file")"
description="$(get_field "description" "$file")"
slug="agency-$(slugify "$name")"
body="$(get_body "$file")"
# Stage one dir per skill (install.sh copies into ~/.osaurus/skills/<name>/).
outdir="$OUT_DIR/osaurus/$slug"
outfile="$outdir/SKILL.md"
mkdir -p "$outdir"
# Osaurus skill format: the Anthropic "Agent Skills" SKILL.md — a directory
# named for the skill containing a SKILL.md with name + description frontmatter
# and the persona as the instruction body. Installs into ~/.osaurus/skills/.
# Kept to the standard fields so it stays compatible with any Agent-Skills host.
cat > "$outfile" <<HEREDOC
---
name: ${slug}
description: ${description}
---
${body}
HEREDOC
}
convert_codex() {
local file="$1"
local name description slug outfile body
@@ -527,6 +555,7 @@ run_conversions() {
openclaw) convert_openclaw "$file" ;;
qwen) convert_qwen "$file" ;;
kimi) convert_kimi "$file" ;;
osaurus) convert_osaurus "$file" ;;
aider) accumulate_aider "$file" ;;
windsurf) accumulate_windsurf "$file" ;;
esac
@@ -557,7 +586,7 @@ main() {
esac
done
local valid_tools=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen" "kimi" "codex" "all")
local valid_tools=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen" "kimi" "codex" "osaurus" "all")
local valid=false
for t in "${valid_tools[@]}"; do [[ "$t" == "$tool" ]] && valid=true && break; done
if ! $valid; then
@@ -576,7 +605,7 @@ main() {
local tools_to_run=()
if [[ "$tool" == "all" ]]; then
tools_to_run=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen" "kimi" "codex")
tools_to_run=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen" "kimi" "codex" "osaurus")
else
tools_to_run=("$tool")
fi
@@ -587,7 +616,7 @@ main() {
if $use_parallel && [[ "$tool" == "all" ]]; then
# Tools that write to separate dirs can run in parallel; buffer output so each tool's output stays together
local parallel_tools=(antigravity gemini-cli opencode cursor openclaw qwen codex)
local parallel_tools=(antigravity gemini-cli opencode cursor openclaw qwen codex osaurus)
local parallel_out_dir
parallel_out_dir="$(mktemp -d)"
info "Converting: ${#parallel_tools[@]}/${n_tools} tools in parallel (output buffered per tool)..."