一键导入
ops-base
Shared operational framework for meeting documentation, task management, and workflow processes. Base module referenced by the /ops skill.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Shared operational framework for meeting documentation, task management, and workflow processes. Base module referenced by the /ops skill.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Process meeting content into structured documentation -- summaries, decision tracking, action propagation, file updates. Config-driven for any organization. Replaces project-ops, bravo-ops, management-ops, marketing-ops.
Process and summarize transcriptions from calls, meetings, or voice recordings. Use when user provides a transcription, mentions processing a transcript, or wants to summarize a recorded conversation.
Knowledge extraction manager and skill evolution engine. Backfills _insights.yaml from historical corpus, compiles execution feedback into patterns, and proposes SKILL.md improvements.
Lifecycle management for outgoing material in `_outbox/`. List pending items, archive completed ones into the relevant contact/project folder, and keep manifest, CHANGELOG, and tasks in sync. Use when an outbox item has been sent, replied to, or otherwise resolved -- and the central `_outbox/` should be cleaned up.
Manage skill repo updates, symlink health, and installation. Fetches from multiple remotes with version safety, creates symlinks for new skills, audits symlink state.
Universal entry point for unstructured content. Classifies, stores in _inbox/, and hands off to the appropriate downstream skill.
| name | ops-base |
| description | Shared operational framework for meeting documentation, task management, and workflow processes. Base module referenced by the /ops skill. |
| user-invocable | false |
Shared standards for operational documentation across all ops-skills.
IMPORTANT: The project CLAUDE.md is the single source of truth for vault-specific details. This skill defines generic frameworks and workflows; CLAUDE.md defines where things go.
Domain skills use a layered configuration system for organization-specific settings.
.claude/ops-config.yaml in the project root<folder>/_ops.yaml walking up from CWD until vault root. Vault root = nearest ancestor containing _inbox/, _outbox/, or .obsidian/ (or VAULT_ROOT env override).<vault-root>/_config/base.yaml~/.claude/skills/ops-config/base.yamlFirst match wins. Later layers provide fallback values.
Deprecated (v1.16.0, removed v1.17.0): the previous step "Org config skill: ~/.claude/skills/{org}-ops-config/{org}.yaml" is deprecated. If still present, it acts as a fallback between steps 3 and 4 with a one-time deprecation warning. Migrate by copying the YAML into the matching <vault>/<org>/_ops.yaml.
When processing content, domain skills should:
Determine organization from:
organization field in project CLAUDE.mdacme-* -> acme)Load config following resolution order
Apply config values:
language: Determines output language (english/swedish/input)team: For participant recognition and attributionresponsibility_matrix: For owner assignmentsterminology: For consistent term usageworkflows.update_files: Which files to updateworkflows.action_propagation: Whether to propagate actionsdomain_additions: Extra sections to includeOrganization configs live in the vault folder they describe: <vault>/<org>/_ops.yaml (CR-011). The base fallback config base.yaml is in ~/.claude/skills/ops-config/. Optional vault-wide overrides go in <vault>/_config/base.yaml.
Pre-CR-011 skill-based configs (*-ops-config skills under ~/.claude/skills/) are deprecated and removed in v1.17.0.
See ~/.claude/skills/ops-config/schema.md for complete schema definition.
Follow the TWO-TIER SUMMARY FORMAT defined in the project CLAUDE.md. That document defines the base structures for both Concise and Detailed Strategic summaries. The /ops skill may add supplementary sections via config domain_additions or use a custom summary_sections structure.
When processing a meeting:
Regardless of which format variant is used, the standard sections must appear in this order:
#, Åtgärd/Action, Ägare/Owner, Prio/Priority, Deadline)*(Inga formella beslut)*Use these canonical heading names only -- do not produce variants like Sammanfattning, Executive Summary, Summary, Action Items, Åtgärdspunkter, Huvudpunkter, Key Discussion Points, or Decisions Made in new files. See /transcript SKILL.md for the full canonical heading table and Action Item Table format.
| Variant | When | Required sections |
|---|---|---|
| Concise | <30 min meetings, internal task sessions | Nästa steg, Beslut, Konklusion |
| Standard | 30-90 min meetings, most contact samtal, standups | Full canonical structure |
| Extended | >90 min meetings, board, strategy, multi-topic | Full structure + per-topic numbered subsections |
Default to Standard. There is no minimum length for the Konklusion section -- a short meeting still has an outcome.
Recurring meeting series erode format rules by silent template forking, not random noise: the model pattern-matches the previous file of the same series, so one deviating file re-seeds the whole series (a dropped table column, a reintroduced banished heading), and every subsequent file is internally consistent -- which is exactly why per-file review never catches it. The counter-measure is a declared per-meeting-type shape contract, checked at save time.
Registry (org or folder-local config, workflows.meeting_templates): each entry declares a match glob for the series and the expected shape; a default entry covers everything unmatched (falling back to the CR-006 canonical order and the strings action-table headers):
workflows:
meeting_templates:
mode: warn # warn (default) | strict
weekly-management:
match: "meetings/management/2*-Weekly-*"
headings: [Nästa steg, Beslut, Konklusion, Diskussion, Bakgrund]
action_table: ["#", "Åtgärd", "Ägare", "Prio", "Deadline"]
The check (run by /ops and /transcript as the last pre-save step, after Swedish-character validation). Resolve the matching contract (most specific match wins, else default) and verify exactly three things:
headings (order and canonical names; banished variants fail).action_table.## Beslut section with no decisions must contain the no_decisions_marker string -- absence-by-omission fails.On mismatch: mode: warn (default) -- save, report the exact diff to the user, log an edge_case. mode: strict -- show the diff and ask before saving. A deliberate format change is made by editing the contract, never by letting a file drift: that turns an accidental fork into an explicit, reviewable decision.
Orgs with no meeting_templates config get the default CR-006 contract in warn mode -- the check is never fully off.
Consult the project CLAUDE.md for task document locations within the relevant ops/ domain.
Content:
Tasks are tracked in distributed _tasks.yaml files (v2 schema) at each folder level. Each file has context (folder identity) and scope (root/org/project/personal). The /tasks skill manages these files, and the visualisation app aggregates them.
| File | Signals | Used by |
|---|---|---|
_tasks.yaml | Folder with tracked tasks | /tasks, /ops, /daily-dashboard, visualisation |
Consult the project CLAUDE.md for:
YYMMDD- prefix -- always this format, never ISO (2026-03-12-). A folder may only deviate if its own CLAUDE.md explicitly declares another format.mote), never digit-substitute (m0te), never mix policies within one filename (förberedelse-...-utlosen). CR-007 covered file content; this extends it to the filename -- run the same driftword check against the slug before saving.{strings.filename_keywords} word (samtal/förberedelse/sammanfattning/standup, or English equivalents) must appear in the slug so the file's role is machine-readable. A preparation must never be named like a summary -- /daily-dashboard and /outbox route by these keywords.Alex-Bob); all other slug tokens are lowercase/ops normalize --filenames <folder> (renames + rewrites inbound references it can find); never rename existing files implicitly -- links point at current names## [YYYY-MM-DD] - Description
**Meeting:** Duration | **Participants:** Names
**Summary:** [Link](path/to/summary.md)
**Key Changes:**
- Area: Change description
- Area: Change description
- Status: NEW/ONGOING/RESOLVED
Consult the project CLAUDE.md for archive policy. General rules:
.archive/ within the relevant domain folder.ephemeral/ contract (CR-024)<vault>/.ephemeral/ is the one place exempt from never-delete: disposable working material with no vault destiny -- session scratch, repo snapshots, intermediate artifacts of one-off analyses. Rules:
.ephemeral/ is ever input to vault content, and no vault file may reference a path inside it./ops sweep (check 6) flags content older than 14 days; deletion is the expected outcome, not archiving..ephemeral/ turns out to have a vault destiny after all, it exits through _inbox/.files/ (see docs/schemas/inbox.md, CR-024) like any other input file._inbox/.files/; no destiny → .ephemeral/. Made consciously, once, instead of by gravity.Skills handle "create new home" well and "retire old home" never -- every relocation of a living artifact (a dashboard, rolling plan, meeting series, task ledger, or output path change) tends to leave the old artifact in place, current-looking and silently frozen. Readers cannot tell "moved" from "abandoned" from "still authoritative".
The rule: any relocation of a living artifact MUST, in the same operation:
> **Flyttad (YYMMDD):** se [new-path](relative/link/to/new-path)
This applies to skills moving their own output (e.g. /daily-dashboard changing output location must tombstone the old dashboard, not leave two live-looking copies) and to user-driven moves processed through a skill (e.g. a 1-on-1 series moving to a new folder gets a forward-pointer README in the old one). /ops sweep detects violations after the fact; this convention prevents them at move time.
[See: YYMMDD-Meeting.md][Tasks: ../tasks/YYMMDD.md][CHANGELOG: YYYY-MM-DD]When processing content:
Load configuration:
Identify content type:
For meetings:
team from config for attributiondomain_additions sections from configFor tasks:
responsibility_matrix from config for owner assignmentExecute workflows:
workflows.update_filesworkflows.action_propagation.enabled, propagate to target filesApply language:
english: Output in English regardless of inputswedish: Output in Swedish regardless of inputinput: Match the transcript's languageper_claude_md: Follow the project CLAUDE.md LANGUAGE POLICY for per-file-type rulesCRITICAL -- Swedish character enforcement (when swedish_chars: strict):
swedish_chars: strict resolution at write time (CR-007):
swedish_chars, use thatacme/, delta/, echo/), use that venture's configlanguage_inheritance.apply_swedish_chars_strict_to glob from base.yaml (default: _projects/**, _contacts/**, _private/**, _inbox/**), inherit strict from basestrict since CR-007)This means files written under _projects/bravo-project/ or any other sub-tree without its own CLAUDE.md are still subject to strict-mode enforcement.
Enforcement rules:
~/.claude/skills/ops-config/swedish_substitutions.yaml/ops normalize <file> (see ops/SKILL.md)Always include:
Execution feedback capture (silent):
If workflows.knowledge_extraction.evolution.enabled is true, silently log noteworthy execution events to _insights.yaml in the target folder. This step produces no visible output.
What to capture:
| Type | When | Example |
|---|---|---|
edge_case | Ambiguous input required guessing or user disambiguation | Name matched multiple contacts, unclear meeting routing, language detection uncertain |
correction | User corrected or overrode skill output after seeing it | Changed file location, corrected participant names, modified summary structure |
When NOT to capture: Normal, successful execution. Most invocations produce zero feedback entries. Only log when something unexpected happened or the user intervened.
Entry format:
- id: [next_id]
type: edge_case # or correction
date: YYMMDD
summary: "One sentence describing what happened"
detail: "How it was resolved"
source:
file: "transcript-or-summary-filename.md"
skill: ops # or transcript, inbox, etc.
step: "step number where it occurred"
tags: [max, five, keywords]
status: active
Follow the same _insights.yaml format, dedup rules, vocabulary guard, and reusability rules as knowledge extraction (Step 5.5 in /ops, Step 3.5 in /transcript).