ur-agent 1.23.3 → 1.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/CONTRIBUTING.md +21 -0
  3. package/LICENSE +1 -1
  4. package/QUALITY.md +5 -2
  5. package/README.md +83 -16
  6. package/RELEASE.md +54 -0
  7. package/SECURITY.md +22 -0
  8. package/bin/ur.js +5 -5
  9. package/dist/cli.js +5423 -4655
  10. package/docs/AGENT_FEATURES.md +8 -0
  11. package/docs/AGENT_UPGRADE_1.15.0.md +1 -1
  12. package/docs/AGENT_UPGRADE_1.16.0.md +1 -1
  13. package/docs/AGENT_UPGRADE_1.17.0.md +1 -1
  14. package/docs/AGENT_UPGRADE_1.18.0.md +1 -1
  15. package/docs/AGENT_UPGRADE_1.19.0.md +1 -1
  16. package/docs/AGENT_UPGRADE_1.20.0.md +1 -1
  17. package/docs/AGENT_UPGRADE_1.21.0.md +1 -1
  18. package/docs/AGENT_UPGRADE_1.22.0.md +1 -1
  19. package/docs/CODE_FEATURE_INVENTORY.md +9 -3
  20. package/docs/DEVELOPMENT.md +8 -4
  21. package/docs/USAGE.md +18 -1
  22. package/docs/VALIDATION.md +4 -4
  23. package/docs/plugins.md +52 -0
  24. package/documentation/README.md +2 -2
  25. package/documentation/app.js +5 -5
  26. package/documentation/assets/ur-architecture.svg +1 -1
  27. package/documentation/index.html +15 -11
  28. package/package.json +11 -6
  29. package/plugins/bunBundleDev.ts +32 -0
  30. package/plugins/community/.gitkeep +1 -0
  31. package/plugins/core/README.md +69 -0
  32. package/plugins/core/code-review/.ur-plugin/plugin.json +13 -0
  33. package/plugins/core/code-review/README.md +37 -0
  34. package/plugins/core/code-review/commands/code-review.md +47 -0
  35. package/plugins/core/engineering-discipline/.ur-plugin/plugin.json +33 -0
  36. package/plugins/core/engineering-discipline/README.md +21 -0
  37. package/plugins/core/engineering-discipline/commands/discipline-check.md +25 -0
  38. package/plugins/core/engineering-discipline/skills/reproducible-release/SKILL.md +31 -0
  39. package/plugins/core/engineering-discipline/templates/release-verifier.md +18 -0
  40. package/plugins/core/engineering-discipline/validators/release-gate.json +7 -0
  41. package/plugins/core/evaluate-response/.ur-plugin/plugin.json +13 -0
  42. package/plugins/core/evaluate-response/README.md +42 -0
  43. package/plugins/core/evaluate-response/commands/evaluate-response.md +61 -0
  44. package/plugins/core/explain-error/.ur-plugin/plugin.json +13 -0
  45. package/plugins/core/explain-error/README.md +32 -0
  46. package/plugins/core/explain-error/commands/explain-error.md +37 -0
  47. package/plugins/core/git-summary/.ur-plugin/plugin.json +13 -0
  48. package/plugins/core/git-summary/README.md +29 -0
  49. package/plugins/core/git-summary/commands/git-summary.md +27 -0
  50. package/plugins/core/github/.ur-plugin/plugin.json +31 -0
  51. package/plugins/core/github/README.md +37 -0
  52. package/plugins/core/github/commands/gh-issues.md +19 -0
  53. package/plugins/core/github/commands/gh-pr-create.md +19 -0
  54. package/plugins/core/github/commands/gh-pr-review.md +37 -0
  55. package/plugins/core/github/commands/gh-repo-health.md +23 -0
  56. package/plugins/core/github/skills/github-workflow/SKILL.md +53 -0
  57. package/plugins/core/gitlab/.ur-plugin/plugin.json +39 -0
  58. package/plugins/core/gitlab/README.md +39 -0
  59. package/plugins/core/gitlab/commands/gl-issues.md +19 -0
  60. package/plugins/core/gitlab/commands/gl-mr-create.md +19 -0
  61. package/plugins/core/gitlab/commands/gl-mr-review.md +36 -0
  62. package/plugins/core/gitlab/commands/gl-pipeline.md +21 -0
  63. package/plugins/core/gitlab/skills/gitlab-workflow/SKILL.md +63 -0
  64. package/plugins/core/hello/.ur-plugin/plugin.json +13 -0
  65. package/plugins/core/hello/README.md +45 -0
  66. package/plugins/core/hello/commands/hello.md +16 -0
  67. package/plugins/core/huggingface/.ur-plugin/plugin.json +36 -0
  68. package/plugins/core/huggingface/README.md +36 -0
  69. package/plugins/core/huggingface/commands/hf-dataset-search.md +19 -0
  70. package/plugins/core/huggingface/commands/hf-download.md +23 -0
  71. package/plugins/core/huggingface/commands/hf-model-card.md +23 -0
  72. package/plugins/core/huggingface/commands/hf-model-search.md +20 -0
  73. package/plugins/core/huggingface/skills/huggingface-workflow/SKILL.md +70 -0
  74. package/plugins/core/miro/.ur-plugin/plugin.json +27 -0
  75. package/plugins/core/miro/README.md +39 -0
  76. package/plugins/core/miro/commands/miro-board.md +17 -0
  77. package/plugins/core/miro/commands/miro-diagram.md +20 -0
  78. package/plugins/core/miro/commands/miro-export.md +18 -0
  79. package/plugins/core/miro/commands/miro-stickies.md +19 -0
  80. package/plugins/core/miro/skills/miro-workflow/SKILL.md +54 -0
  81. package/plugins/core/obsidian/.ur-plugin/plugin.json +42 -0
  82. package/plugins/core/obsidian/README.md +42 -0
  83. package/plugins/core/obsidian/commands/backlinks.md +22 -0
  84. package/plugins/core/obsidian/commands/daily-note.md +29 -0
  85. package/plugins/core/obsidian/commands/moc.md +24 -0
  86. package/plugins/core/obsidian/commands/second-brain.md +37 -0
  87. package/plugins/core/obsidian/commands/vault-search.md +20 -0
  88. package/plugins/core/obsidian/skills/second-brain/SKILL.md +86 -0
  89. package/plugins/core/powerpoint/.ur-plugin/plugin.json +26 -0
  90. package/plugins/core/powerpoint/README.md +35 -0
  91. package/plugins/core/powerpoint/commands/pptx-from-md.md +18 -0
  92. package/plugins/core/powerpoint/commands/pptx-new.md +21 -0
  93. package/plugins/core/powerpoint/commands/pptx-review.md +32 -0
  94. package/plugins/core/powerpoint/commands/pptx-theme.md +18 -0
  95. package/plugins/core/powerpoint/skills/deck-craft/SKILL.md +60 -0
  96. package/plugins/core/release-notes/.ur-plugin/plugin.json +13 -0
  97. package/plugins/core/release-notes/README.md +28 -0
  98. package/plugins/core/release-notes/commands/release-notes.md +56 -0
  99. package/plugins/core/skill-forge/.ur-plugin/plugin.json +13 -0
  100. package/plugins/core/skill-forge/README.md +37 -0
  101. package/plugins/core/skill-forge/commands/forge-skill.md +47 -0
  102. package/plugins/core/skill-forge/commands/skill-refine.md +19 -0
  103. package/plugins/core/skill-forge/skills/skill-authoring/SKILL.md +84 -0
  104. package/plugins/core/word/.ur-plugin/plugin.json +26 -0
  105. package/plugins/core/word/README.md +37 -0
  106. package/plugins/core/word/commands/docx-edit.md +18 -0
  107. package/plugins/core/word/commands/docx-from-md.md +19 -0
  108. package/plugins/core/word/commands/docx-new.md +22 -0
  109. package/plugins/core/word/commands/docx-review.md +29 -0
  110. package/plugins/core/word/skills/document-craft/SKILL.md +61 -0
  111. package/plugins/examples/README.md +12 -0
  112. package/plugins/examples/command-template/.ur-plugin/plugin.json +12 -0
  113. package/plugins/examples/command-template/README.md +9 -0
  114. package/plugins/examples/command-template/commands/example.md +7 -0
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: Deck Craft (PowerPoint)
3
+ description: Conventions for professional PowerPoint decks — layouts over text boxes, one idea per slide, sparse text with detail in notes, visual hierarchy, charts, templates, and accessibility. Use when building, converting, reviewing, or theming .pptx files.
4
+ version: 0.1.0
5
+ ---
6
+
7
+ # Deck Craft (PowerPoint)
8
+
9
+ Slides support a talk; they are not the document. Put the argument on the slide,
10
+ the detail in the notes.
11
+
12
+ ## One idea per slide
13
+
14
+ - Each content slide makes a single point; its title states that point as a
15
+ sentence where possible (`Latency dropped 40% after caching`, not `Results`).
16
+ - If a slide needs two ideas, it is two slides.
17
+
18
+ ## Sparse text
19
+
20
+ - Aim for one level of bullets and few words per line. The classic guide is
21
+ roughly six bullets and six words each — treat it as a ceiling, not a target.
22
+ - Anything you would read aloud verbatim belongs in the speaker notes.
23
+
24
+ ## Layouts over text boxes
25
+
26
+ - Use the slide master's layouts and placeholders (title, content, two-content,
27
+ section header). Off-template floating boxes drift and break theming.
28
+ - Re-theming should remap content into placeholders, not nudge boxes.
29
+
30
+ ## Visual hierarchy
31
+
32
+ - One focal point per slide. Size, weight, and position guide the eye to it.
33
+ - Align to a grid; consistent margins read as "designed".
34
+
35
+ ## Charts and tables
36
+
37
+ - Prefer a chart to a table when the point is a trend or comparison.
38
+ - Label axes and series; do not make the audience decode a legend.
39
+ - Show the takeaway in the title, the evidence in the chart.
40
+
41
+ ## Templates
42
+
43
+ - Start from a `.potx`/template deck to inherit theme colors, fonts, and layouts.
44
+ - Keep brand styling in the template; keep content in the slides.
45
+
46
+ ## Accessibility
47
+
48
+ - Sufficient contrast; never rely on color alone to convey meaning.
49
+ - Alt text on images and charts; slide numbers on; a sensible reading order.
50
+
51
+ ## Flow
52
+
53
+ - Open with the point, not a long agenda. Use section headers to segment.
54
+ - Close with the takeaway and the next step, not "Thank you / Questions" alone.
55
+
56
+ ## Guardrails
57
+
58
+ - Restyle without rewriting: preserve each slide's message and order.
59
+ - Push prose into notes rather than shrinking the font to fit.
60
+ - State plainly when a template cannot be applied automatically.
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "release-notes",
3
+ "version": "0.1.0",
4
+ "description": "Adds /release-notes — drafts release notes from git log since the last tag.",
5
+ "author": {
6
+ "name": "Maitham Al-rubaye",
7
+ "url": "https://github.com/Maitham16/UR"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/UR/tree/master/plugins/core/release-notes",
10
+ "repository": "https://github.com/Maitham16/UR",
11
+ "license": "LicenseRef-UR-AGENT-Non-Commercial-Self-Responsibility",
12
+ "keywords": ["release", "notes", "changelog", "git"]
13
+ }
@@ -0,0 +1,28 @@
1
+ # release-notes
2
+
3
+ Adds `/release-notes` — drafts release notes by grouping commits since the
4
+ last tag (or a given ref) into Features / Fixes / Documentation / Other.
5
+
6
+ ## Use
7
+
8
+ ```text
9
+ /release-notes
10
+ /release-notes v1.3.0
11
+ /release-notes HEAD~30
12
+ ```
13
+
14
+ With no argument, the plugin uses `git describe --tags --abbrev=0` to
15
+ find the most recent tag. If there are no tags, falls back to `HEAD~20`.
16
+
17
+ ## What it returns
18
+
19
+ A markdown release-notes draft. Categories with no entries are omitted.
20
+ The footer reports how many commits were grouped and what percentage fell
21
+ into "Other" — a high "Other" percentage hints that the project would
22
+ benefit from conventional-commit messages.
23
+
24
+ ## Install
25
+
26
+ ```text
27
+ /plugin install release-notes@ur-plugins-official
28
+ ```
@@ -0,0 +1,56 @@
1
+ ---
2
+ description: Draft release notes by grouping commits since the last tag (or a given ref).
3
+ argument-hint: "[since-ref] (default: last tag)"
4
+ ---
5
+
6
+ Determine the base ref:
7
+
8
+ - If `$ARGUMENTS` is non-empty, use it.
9
+ - Otherwise run `git describe --tags --abbrev=0` to find the most recent
10
+ tag and use that.
11
+ - If there are no tags, fall back to `HEAD~20`.
12
+
13
+ Get the commit list:
14
+
15
+ ```sh
16
+ git log <base>..HEAD --pretty=format:'%h %s'
17
+ ```
18
+
19
+ If the result is empty, say "No new commits since `<base>`." and stop.
20
+
21
+ Otherwise group commits by category. Decide category from the commit
22
+ message itself, in this order of preference:
23
+
24
+ 1. Conventional-commit prefix (`feat:`, `fix:`, `docs:`, `chore:`,
25
+ `refactor:`, `test:`, `perf:`, `style:`).
26
+ 2. Keyword in the subject (`add`, `new`, `introduce` → feature;
27
+ `fix`, `bug`, `correct` → fix; `doc`, `readme` → docs).
28
+ 3. Otherwise → "Other".
29
+
30
+ Render a markdown draft:
31
+
32
+ ```md
33
+ ## <next-version-or-today>
34
+
35
+ ### Features
36
+ - <one-line per feature commit, short SHA in backticks at the end>
37
+
38
+ ### Fixes
39
+ - ...
40
+
41
+ ### Documentation
42
+ - ...
43
+
44
+ ### Other
45
+ - ...
46
+ ```
47
+
48
+ If the project has a `package.json` with a `version`, use it for the
49
+ header (`## <version> — <YYYY-MM-DD>`). Otherwise just use today's
50
+ date.
51
+
52
+ Omit any section that has no entries — do not show empty headers.
53
+
54
+ End with one line: how many commits total were grouped and what
55
+ percentage fell into "Other". A high "Other" percentage signals the
56
+ project would benefit from conventional-commit messages.
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "skill-forge",
3
+ "version": "0.1.0",
4
+ "description": "Have the agent author complete skills for you: describe what you want, and the active model writes a ready-to-use SKILL.md (frontmatter, steps, success criteria) and saves it to your skills directory.",
5
+ "author": {
6
+ "name": "Maitham Al-rubaye",
7
+ "url": "https://github.com/Maitham16/UR"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/UR/tree/master/plugins/core/skill-forge",
10
+ "repository": "https://github.com/Maitham16/UR",
11
+ "license": "LicenseRef-UR-AGENT-Non-Commercial-Self-Responsibility",
12
+ "keywords": ["skill", "authoring", "generator", "automation", "meta"]
13
+ }
@@ -0,0 +1,37 @@
1
+ # skill-forge
2
+
3
+ Have the agent build skills for you. Describe what you want and the **currently
4
+ selected model** authors a complete, ready-to-use `SKILL.md` — frontmatter,
5
+ triggers, steps, and success criteria — then saves it to your skills directory.
6
+
7
+ This complements the built-in `/create-skill`, which only scaffolds an empty
8
+ template. `skill-forge` writes the real content.
9
+
10
+ ## Commands
11
+
12
+ | Command | Argument | What it does |
13
+ | --- | --- | --- |
14
+ | `/forge-skill` | `<what it should do> [--project]` | Author a full skill from your description and save it. |
15
+ | `/skill-refine` | `<name> : <change>` | Improve or extend an existing skill. |
16
+
17
+ A bundled `skill-authoring` skill defines the conventions both commands follow
18
+ (frontmatter, trigger design, step structure, tool scoping).
19
+
20
+ ## Setup
21
+
22
+ ```sh
23
+ /plugin install skill-forge@ur-plugins-official
24
+ /forge-skill a skill that drafts release notes from the git log since the last tag
25
+ ```
26
+
27
+ The commands run as prompts, so they use whatever model your session is on — no
28
+ configuration. Skills are saved to `~/.ur/skills/<name>/` by default, or
29
+ `./.ur/skills/<name>/` with `--project`. Existing skills are never overwritten.
30
+
31
+ ## How it works
32
+
33
+ `/forge-skill` reads your brief, designs the skill (name, `when_to_use` triggers,
34
+ arguments, minimal `allowed-tools`, inline vs fork, steps with success criteria),
35
+ shows you the `SKILL.md` for a one-tap confirmation, then writes it — adding
36
+ helper scripts beside it when the task warrants. After saving, invoke it like any
37
+ skill: `/<name>`.
@@ -0,0 +1,47 @@
1
+ ---
2
+ description: Author a complete, reusable skill from your description and save it to your skills directory.
3
+ argument-hint: "<what the skill should do> [--project]"
4
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir:*), AskUserQuestion
5
+ ---
6
+
7
+ Author a new UR skill from `$ARGUMENTS`, following the conventions in the
8
+ `skill-authoring` skill. You — the active session model — do the writing; this
9
+ is not a template scaffold.
10
+
11
+ **1. Get the brief.**
12
+ - If `$ARGUMENTS` describes a skill, treat it as the brief.
13
+ - If `$ARGUMENTS` is empty, offer to capture what this session just did, or ask
14
+ for a one-line description. Do not proceed without a brief.
15
+ - Note whether `--project` was passed (it controls the save location).
16
+
17
+ **2. Design it.** From the brief, decide:
18
+ - a kebab-case `name` and a one-line `description`;
19
+ - `when_to_use` — the trigger phrases and example user messages that should
20
+ auto-invoke it (the most important field; start with "Use when…");
21
+ - whether it takes `arguments` (with an `argument-hint`);
22
+ - the minimum `allowed-tools`, as narrow patterns (`Bash(gh:*)`, not bare `Bash`);
23
+ - `inline` (default) vs `context: fork` (self-contained, no mid-run input);
24
+ - the ordered steps, each with an explicit **Success criteria**.
25
+
26
+ Keep simple skills simple — do not over-engineer a two-step process or
27
+ interrogate the user for one. Ask focused AskUserQuestion rounds only when the
28
+ brief is genuinely ambiguous.
29
+
30
+ **3. Draft and confirm.** Output the complete `SKILL.md` as a fenced `yaml`
31
+ block so the user can review it, then ask one concise AskUserQuestion — "Save
32
+ this skill?" Do not add a "needs tweaking" option; the freeform Other covers
33
+ edits.
34
+
35
+ **4. Save.** Resolve the directory:
36
+ - global (default): `~/.ur/skills/<name>/`
37
+ - project (`--project`): `./.ur/skills/<name>/`
38
+
39
+ Never overwrite an existing `SKILL.md` — if one exists, pick a new name or point
40
+ the user to `/skill-refine`. Create the directory (`mkdir -p`) and write
41
+ `SKILL.md`. If the skill needs helper scripts or reference material, create them
42
+ under the skill directory and reference them from the body (progressive
43
+ disclosure) rather than inlining everything.
44
+
45
+ **5. Report.** Print the saved path, how to invoke it (`/<name> [args]`), and
46
+ that it can be edited directly. If it does not appear immediately, a new session
47
+ will pick it up.
@@ -0,0 +1,19 @@
1
+ ---
2
+ description: Improve or extend an existing skill — sharpen triggers, add steps, scripts, or success criteria.
3
+ argument-hint: "<skill-name> : <what to change or add>"
4
+ allowed-tools: Read, Write, Edit, Glob, Grep, AskUserQuestion
5
+ ---
6
+
7
+ Refine an existing skill.
8
+
9
+ 1. Split `$ARGUMENTS` into a skill name and the change request (separated by
10
+ `:`). If the name is missing, list the skills under `~/.ur/skills` and
11
+ `./.ur/skills` and ask which one to refine.
12
+ 2. Locate its `SKILL.md` — project `./.ur/skills/<name>/` takes precedence over
13
+ global `~/.ur/skills/<name>/`. If none exists, say so and offer `/forge-skill`.
14
+ 3. Read it, then apply the requested change while keeping the `skill-authoring`
15
+ conventions: a sharp `when_to_use`, minimal `allowed-tools`, and a
16
+ **Success criteria** on every step. Preserve everything not being changed.
17
+ 4. Show the updated `SKILL.md` (or a diff of the changed sections) and confirm
18
+ with one AskUserQuestion before writing.
19
+ 5. Save in place and report exactly what changed.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: Skill Authoring
3
+ description: Conventions for writing a high-quality UR skill — frontmatter fields, trigger design, step structure with success criteria, tool scoping, and storage locations. Use when authoring, generating, or refining a SKILL.md.
4
+ when_to_use: Use when creating or improving a skill — e.g. "make a skill that…", "turn this into a skill", "forge a skill", or editing a SKILL.md.
5
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash(mkdir:*), AskUserQuestion
6
+ ---
7
+
8
+ # Skill Authoring
9
+
10
+ A skill is a reusable prompt UR auto-invokes when its triggers match. Quality
11
+ lives in two places: a `when_to_use` sharp enough to fire at the right time, and
12
+ steps concrete enough to execute without re-deriving the process.
13
+
14
+ ## Storage
15
+
16
+ - **Project**: `./.ur/skills/<name>/SKILL.md` — workflows specific to this repo.
17
+ - **Personal**: `~/.ur/skills/<name>/SKILL.md` — follows the user across repos.
18
+
19
+ `<name>` is kebab-case. The file is `SKILL.md`. Supporting scripts and reference
20
+ files live beside it in the same directory.
21
+
22
+ ## Frontmatter
23
+
24
+ ```yaml
25
+ ---
26
+ name: <kebab-case-name>
27
+ description: <one line: what it does>
28
+ when_to_use: Use when <situation>. Examples: "<trigger phrase>", "<another>".
29
+ allowed-tools: Read, Write, Bash(gh:*) # minimum, narrow patterns
30
+ argument-hint: "<arg placeholders>" # only if it takes arguments
31
+ arguments: # only if it takes arguments
32
+ - <arg_name>
33
+ context: fork # omit for inline (the default)
34
+ ---
35
+ ```
36
+
37
+ - **`when_to_use` is the most important field.** It tells the model when to
38
+ auto-invoke. Start with "Use when…" and include real trigger phrases and
39
+ example user messages. A vague `when_to_use` means the skill never fires.
40
+ - **`allowed-tools`**: grant the minimum. Prefer scoped patterns like
41
+ `Bash(gh:*)` over bare `Bash`.
42
+ - **`context: fork`** only for self-contained skills that need no mid-run input;
43
+ otherwise leave it inline so the user can steer.
44
+ - **`arguments` / `argument-hint`**: include only if the skill takes parameters.
45
+ Reference them in the body as `$arg_name`.
46
+
47
+ ## Body structure
48
+
49
+ ```markdown
50
+ # <Skill Title>
51
+ One-line statement of what this skill accomplishes.
52
+
53
+ ## Inputs
54
+ - `$arg_name`: what it is.
55
+
56
+ ## Goal
57
+ The end state, with concrete artifacts or criteria for "done".
58
+
59
+ ## Steps
60
+
61
+ ### 1. <Step name>
62
+ What to do — specific and actionable, with commands where useful.
63
+ **Success criteria**: how we know this step is done. REQUIRED on every step.
64
+ ```
65
+
66
+ ### Per-step annotations (optional, add only when they matter)
67
+
68
+ - **Success criteria** — required on every step; the signal it is safe to move on.
69
+ - **Execution** — `Direct` (default), `Task agent`, `Teammate` (parallel), or
70
+ `[human]` when the user must act.
71
+ - **Artifacts** — data a step produces that later steps consume (PR number, SHA).
72
+ - **Human checkpoint** — pause for confirmation before irreversible actions
73
+ (merging, sending messages, deleting).
74
+ - **Rules** — hard constraints; the user's mid-session corrections belong here.
75
+
76
+ Steps that can run concurrently use sub-numbers (3a, 3b).
77
+
78
+ ## Principles
79
+
80
+ - Keep simple skills simple — a two-step skill needs no annotations.
81
+ - Be concrete: name commands, paths, and success signals, not vague advice.
82
+ - Progressive disclosure: put long references or scripts in sibling files and
83
+ link them, rather than bloating the SKILL.md.
84
+ - Don't over-interview the user; infer a strong draft, then confirm once.
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "word",
3
+ "version": "0.1.0",
4
+ "description": "Create, convert, review, and edit Microsoft Word documents from UR — through the Office Word MCP server (python-docx, ~54 tools) with a pandoc / python-docx fallback.",
5
+ "author": {
6
+ "name": "Maitham Al-rubaye",
7
+ "url": "https://github.com/Maitham16/UR"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/UR/tree/master/plugins/core/word",
10
+ "repository": "https://github.com/Maitham16/UR",
11
+ "license": "LicenseRef-UR-AGENT-Non-Commercial-Self-Responsibility",
12
+ "keywords": ["word", "docx", "document", "office", "mcp"],
13
+ "mcpServers": {
14
+ "word": {
15
+ "command": "uvx",
16
+ "args": ["--from", "office-word-mcp-server", "word_mcp_server"]
17
+ }
18
+ },
19
+ "userConfig": {
20
+ "DOCX_DIR": {
21
+ "type": "directory",
22
+ "title": "Default documents directory",
23
+ "description": "Where new .docx files are written when no path is given. Defaults to the current working directory."
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,37 @@
1
+ # word
2
+
3
+ Create, convert, review, and edit Microsoft Word documents from any UR session.
4
+ Backed by the **Office Word MCP server** (python-docx, ~54 tools), with a
5
+ `pandoc` / `python-docx` fallback so the commands still work headless.
6
+
7
+ ## Commands
8
+
9
+ | Command | Argument | What it does |
10
+ | --- | --- | --- |
11
+ | `/docx-new` | `<brief \| outline.md>` | Create a styled document from a brief or outline. |
12
+ | `/docx-from-md` | `<file.md> [out.docx]` | Convert Markdown to a styled `.docx`. |
13
+ | `/docx-review` | `<file.docx>` | Report structure, styling, and accessibility issues with a verdict. |
14
+ | `/docx-edit` | `<file.docx> — <change>` | Apply targeted edits while preserving styles. |
15
+
16
+ A bundled `document-craft` skill defines the styling and accessibility
17
+ conventions all commands follow.
18
+
19
+ ## Setup
20
+
21
+ ```sh
22
+ /plugin install word@ur-plugins-official
23
+ ```
24
+
25
+ The MCP server runs via `uvx`, so install **uv** once
26
+ (`curl -LsSf https://astral.sh/uv/install.sh | sh`). UR launches
27
+ `uvx --from office-word-mcp-server word_mcp_server` on demand — no manual clone.
28
+ Optionally set **DOCX_DIR** as the default output folder.
29
+
30
+ Fallbacks use `pandoc` (Markdown → docx) and `python-docx`
31
+ (`pip install python-docx`); install either if you want the commands to work
32
+ without `uvx`.
33
+
34
+ ## Security
35
+
36
+ The server operates on local files only. Edits preserve existing styles, and
37
+ in-place overwrites can keep a backup on request.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Apply targeted edits to a Word document — find/replace, add sections, restyle.
3
+ argument-hint: "<path/to/file.docx> — <what to change>"
4
+ ---
5
+
6
+ Edit the `.docx` named in `$ARGUMENTS`. Split the argument into the file path and
7
+ the change instruction (separated by `—`, `:`, or a newline). If either is
8
+ missing, ask for it and stop.
9
+
10
+ 1. Read the document so edits respect its existing structure and styles.
11
+ 2. Apply only the requested change: find/replace text, insert or remove a
12
+ heading/section, restyle a range, update a table, refresh the TOC. Preserve
13
+ every unrelated paragraph and its style exactly.
14
+ 3. Save in place. Before overwriting, note that a copy can be kept on request.
15
+
16
+ Prefer the `word` MCP tools (`find_and_replace`, `add_heading`, `format_text`,
17
+ ...). If unavailable, fall back to `python-docx`. Report a concise diff of what
18
+ changed — sections touched, replacements made — not the whole document.
@@ -0,0 +1,19 @@
1
+ ---
2
+ description: Convert a Markdown file into a styled Word document.
3
+ argument-hint: "<path/to/file.md> [output.docx]"
4
+ ---
5
+
6
+ Convert a Markdown file to `.docx`.
7
+
8
+ 1. Read the source Markdown at the first argument. If missing, ask for a path
9
+ and stop.
10
+ 2. Map structure to Word styles: `#`→Title or Heading 1, `##`/`###`→Heading 2/3,
11
+ lists→list styles, fenced code→a monospace style, tables→Word tables, images
12
+ →embedded with the alt text preserved.
13
+ 3. Write to the second argument if given, else the same basename with a `.docx`
14
+ extension in `${user_config.DOCX_DIR}` or the current directory.
15
+
16
+ Prefer the `word` MCP tools. If unavailable, use `pandoc -o <out>.docx <in>.md`
17
+ when pandoc is installed; otherwise fall back to `python-docx` for headings,
18
+ paragraphs, lists, and tables. Report the path and note anything that did not
19
+ map cleanly.
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Create a new Word document from a brief or an outline.
3
+ argument-hint: "<topic / brief> or <path/to/outline.md>"
4
+ ---
5
+
6
+ Create a `.docx` from `$ARGUMENTS`. If empty, ask for a topic or outline and stop.
7
+
8
+ 1. Gather the brief: if `$ARGUMENTS` is a path to a file, read it as the outline;
9
+ otherwise treat the text as the brief and propose a structure first.
10
+ 2. Plan the document: a title, optional subtitle/author, a logical heading
11
+ hierarchy, and the sections to write. Confirm a long structure before writing
12
+ if it is non-trivial.
13
+ 3. Build the document using real Word styles — `Title`, `Heading 1/2/3`, body —
14
+ never manual bold/size as a substitute for styles. Add a table of contents
15
+ field if there are three or more H1s.
16
+ 4. Save to `${user_config.DOCX_DIR}` if set, else the current directory, with a
17
+ slugged filename.
18
+
19
+ Prefer the `word` MCP tools (`create_document`, `add_heading`, `add_paragraph`,
20
+ `add_table`, ...). If the server is unavailable, fall back to `python-docx` via
21
+ Bash. Apply the `document-craft` conventions. Report the path and the final
22
+ outline.
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Review a Word document's structure, styling, and accessibility.
3
+ argument-hint: "<path/to/file.docx>"
4
+ ---
5
+
6
+ Review the `.docx` at `$ARGUMENTS`. If empty, ask for a path and stop.
7
+
8
+ Read the document and report, skipping any section with no findings:
9
+
10
+ ### Structure
11
+ Heading hierarchy sanity (no skipped levels, one Title), section/page breaks,
12
+ presence and correctness of a table of contents.
13
+
14
+ ### Styling
15
+ Manual formatting used where a style belongs, inconsistent fonts or sizes,
16
+ direct color use, hard line breaks faking spacing.
17
+
18
+ ### Accessibility
19
+ Images without alt text, tables without header rows, low-contrast text, links
20
+ with bare URLs instead of descriptive text.
21
+
22
+ ### TL;DR
23
+ End with exactly one of:
24
+ - `TL;DR: Clean.`
25
+ - `TL;DR: Minor fixes.`
26
+ - `TL;DR: Needs structural work.`
27
+
28
+ Prefer the `word` MCP tools to read the document; otherwise inspect it with
29
+ `python-docx`. Do not modify the file — this command only reports.
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: Document Craft (Word)
3
+ description: Conventions for producing professional Microsoft Word documents — styles over manual formatting, heading hierarchy, tables of contents, templates, track changes, tables, and accessibility. Use when creating, converting, reviewing, or editing .docx files.
4
+ version: 0.1.0
5
+ ---
6
+
7
+ # Document Craft (Word)
8
+
9
+ A Word document is a structured object, not formatted text. Edit the structure;
10
+ let styles carry the look.
11
+
12
+ ## Styles over manual formatting
13
+
14
+ - Use `Title`, `Heading 1/2/3`, `Normal`, `Quote`, and list styles. Never fake a
15
+ heading with bold + larger font — it breaks navigation, the TOC, and
16
+ accessibility.
17
+ - Change appearance by editing the style once, not each paragraph.
18
+ - One font family for body, one for headings. Avoid per-paragraph color and size.
19
+
20
+ ## Heading hierarchy
21
+
22
+ - Exactly one `Title`. Do not skip levels (no H1 → H3).
23
+ - Headings are an outline: a reader should grasp the document from them alone.
24
+
25
+ ## Table of contents
26
+
27
+ - Insert a TOC **field**, not a typed list, so it updates with the headings.
28
+ - Add one when the document has three or more H1 sections.
29
+
30
+ ## Templates
31
+
32
+ - Start from a `.dotx` template for repeated document types to inherit styles,
33
+ margins, and a title block. Keep brand styling in the template, not the content.
34
+
35
+ ## Track changes and comments
36
+
37
+ - For review cycles, enable track changes so edits are visible and reversible.
38
+ - Use comments for questions and suggestions; resolve them before finalizing.
39
+
40
+ ## Tables
41
+
42
+ - Mark the first row as a header row (repeats across pages, aids accessibility).
43
+ - Use table styles for banding; avoid manual cell shading per row.
44
+
45
+ ## Accessibility
46
+
47
+ - Every image needs alt text.
48
+ - Links use descriptive text, not a bare URL.
49
+ - Maintain reading order and sufficient contrast; do not encode meaning in color
50
+ alone.
51
+
52
+ ## Page setup
53
+
54
+ - Set margins, headers/footers, and page numbers via section settings, not blank
55
+ paragraphs and tabs.
56
+
57
+ ## Guardrails
58
+
59
+ - Preserve existing styles when editing; do not restyle untouched content.
60
+ - Offer to keep a copy before overwriting a document in place.
61
+ - Do not flatten styled content to plain paragraphs during conversion.
@@ -0,0 +1,12 @@
1
+ # UR-AGENT plugin examples
2
+
3
+ This directory contains templates for local UR-AGENT plugins. Copy an example
4
+ directory, edit its `.ur-plugin/plugin.json`, and install it with:
5
+
6
+ ```bash
7
+ ur --plugin-dir ./plugins/examples/command-template
8
+ ```
9
+
10
+ Production first-party plugins live in `plugins/core/`. Community plugins can
11
+ be staged under `plugins/community/` before being promoted into the official
12
+ marketplace manifest.
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "command-template",
3
+ "displayName": "Command Template",
4
+ "version": "0.1.0",
5
+ "description": "Minimal UR-AGENT plugin template that contributes one slash command.",
6
+ "author": {
7
+ "name": "UR-AGENT"
8
+ },
9
+ "commands": {
10
+ "example": "./commands/example.md"
11
+ }
12
+ }
@@ -0,0 +1,9 @@
1
+ # Command Template
2
+
3
+ Minimal local UR-AGENT plugin template.
4
+
5
+ ```bash
6
+ ur --plugin-dir ./plugins/examples/command-template
7
+ ```
8
+
9
+ Edit `commands/example.md` to change the command behavior.
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Demonstrate a minimal UR-AGENT plugin command.
3
+ argument-hint: "[optional context]"
4
+ ---
5
+
6
+ Reply with a short, factual confirmation that the command-template plugin is
7
+ loaded. If `$ARGUMENTS` is present, include it as the user-provided context.