ur-agent 1.23.2 → 1.24.0

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 (91) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/QUALITY.md +5 -2
  3. package/README.md +41 -9
  4. package/dist/cli.js +5608 -4634
  5. package/docs/AGENT_FEATURES.md +8 -0
  6. package/docs/CODE_FEATURE_INVENTORY.md +6 -0
  7. package/docs/DEVELOPMENT.md +3 -2
  8. package/docs/USAGE.md +3 -1
  9. package/documentation/app.js +3 -3
  10. package/documentation/index.html +9 -5
  11. package/marketplace-plugins/README.md +69 -0
  12. package/marketplace-plugins/code-review/.ur-plugin/plugin.json +13 -0
  13. package/marketplace-plugins/code-review/README.md +37 -0
  14. package/marketplace-plugins/code-review/commands/code-review.md +47 -0
  15. package/marketplace-plugins/engineering-discipline/.ur-plugin/plugin.json +33 -0
  16. package/marketplace-plugins/engineering-discipline/README.md +21 -0
  17. package/marketplace-plugins/engineering-discipline/commands/discipline-check.md +25 -0
  18. package/marketplace-plugins/engineering-discipline/skills/reproducible-release/SKILL.md +31 -0
  19. package/marketplace-plugins/engineering-discipline/templates/release-verifier.md +18 -0
  20. package/marketplace-plugins/engineering-discipline/validators/release-gate.json +7 -0
  21. package/marketplace-plugins/evaluate-response/.ur-plugin/plugin.json +13 -0
  22. package/marketplace-plugins/evaluate-response/README.md +42 -0
  23. package/marketplace-plugins/evaluate-response/commands/evaluate-response.md +61 -0
  24. package/marketplace-plugins/explain-error/.ur-plugin/plugin.json +13 -0
  25. package/marketplace-plugins/explain-error/README.md +32 -0
  26. package/marketplace-plugins/explain-error/commands/explain-error.md +37 -0
  27. package/marketplace-plugins/git-summary/.ur-plugin/plugin.json +13 -0
  28. package/marketplace-plugins/git-summary/README.md +29 -0
  29. package/marketplace-plugins/git-summary/commands/git-summary.md +27 -0
  30. package/marketplace-plugins/github/.ur-plugin/plugin.json +31 -0
  31. package/marketplace-plugins/github/README.md +37 -0
  32. package/marketplace-plugins/github/commands/gh-issues.md +19 -0
  33. package/marketplace-plugins/github/commands/gh-pr-create.md +19 -0
  34. package/marketplace-plugins/github/commands/gh-pr-review.md +37 -0
  35. package/marketplace-plugins/github/commands/gh-repo-health.md +23 -0
  36. package/marketplace-plugins/github/skills/github-workflow/SKILL.md +53 -0
  37. package/marketplace-plugins/gitlab/.ur-plugin/plugin.json +39 -0
  38. package/marketplace-plugins/gitlab/README.md +39 -0
  39. package/marketplace-plugins/gitlab/commands/gl-issues.md +19 -0
  40. package/marketplace-plugins/gitlab/commands/gl-mr-create.md +19 -0
  41. package/marketplace-plugins/gitlab/commands/gl-mr-review.md +36 -0
  42. package/marketplace-plugins/gitlab/commands/gl-pipeline.md +21 -0
  43. package/marketplace-plugins/gitlab/skills/gitlab-workflow/SKILL.md +63 -0
  44. package/marketplace-plugins/hello/.ur-plugin/plugin.json +13 -0
  45. package/marketplace-plugins/hello/README.md +45 -0
  46. package/marketplace-plugins/hello/commands/hello.md +16 -0
  47. package/marketplace-plugins/huggingface/.ur-plugin/plugin.json +36 -0
  48. package/marketplace-plugins/huggingface/README.md +36 -0
  49. package/marketplace-plugins/huggingface/commands/hf-dataset-search.md +19 -0
  50. package/marketplace-plugins/huggingface/commands/hf-download.md +23 -0
  51. package/marketplace-plugins/huggingface/commands/hf-model-card.md +23 -0
  52. package/marketplace-plugins/huggingface/commands/hf-model-search.md +20 -0
  53. package/marketplace-plugins/huggingface/skills/huggingface-workflow/SKILL.md +70 -0
  54. package/marketplace-plugins/miro/.ur-plugin/plugin.json +27 -0
  55. package/marketplace-plugins/miro/README.md +39 -0
  56. package/marketplace-plugins/miro/commands/miro-board.md +17 -0
  57. package/marketplace-plugins/miro/commands/miro-diagram.md +20 -0
  58. package/marketplace-plugins/miro/commands/miro-export.md +18 -0
  59. package/marketplace-plugins/miro/commands/miro-stickies.md +19 -0
  60. package/marketplace-plugins/miro/skills/miro-workflow/SKILL.md +54 -0
  61. package/marketplace-plugins/obsidian/.ur-plugin/plugin.json +42 -0
  62. package/marketplace-plugins/obsidian/README.md +42 -0
  63. package/marketplace-plugins/obsidian/commands/backlinks.md +22 -0
  64. package/marketplace-plugins/obsidian/commands/daily-note.md +29 -0
  65. package/marketplace-plugins/obsidian/commands/moc.md +24 -0
  66. package/marketplace-plugins/obsidian/commands/second-brain.md +37 -0
  67. package/marketplace-plugins/obsidian/commands/vault-search.md +20 -0
  68. package/marketplace-plugins/obsidian/skills/second-brain/SKILL.md +86 -0
  69. package/marketplace-plugins/powerpoint/.ur-plugin/plugin.json +26 -0
  70. package/marketplace-plugins/powerpoint/README.md +35 -0
  71. package/marketplace-plugins/powerpoint/commands/pptx-from-md.md +18 -0
  72. package/marketplace-plugins/powerpoint/commands/pptx-new.md +21 -0
  73. package/marketplace-plugins/powerpoint/commands/pptx-review.md +32 -0
  74. package/marketplace-plugins/powerpoint/commands/pptx-theme.md +18 -0
  75. package/marketplace-plugins/powerpoint/skills/deck-craft/SKILL.md +60 -0
  76. package/marketplace-plugins/release-notes/.ur-plugin/plugin.json +13 -0
  77. package/marketplace-plugins/release-notes/README.md +28 -0
  78. package/marketplace-plugins/release-notes/commands/release-notes.md +56 -0
  79. package/marketplace-plugins/skill-forge/.ur-plugin/plugin.json +13 -0
  80. package/marketplace-plugins/skill-forge/README.md +37 -0
  81. package/marketplace-plugins/skill-forge/commands/forge-skill.md +47 -0
  82. package/marketplace-plugins/skill-forge/commands/skill-refine.md +19 -0
  83. package/marketplace-plugins/skill-forge/skills/skill-authoring/SKILL.md +84 -0
  84. package/marketplace-plugins/word/.ur-plugin/plugin.json +26 -0
  85. package/marketplace-plugins/word/README.md +37 -0
  86. package/marketplace-plugins/word/commands/docx-edit.md +18 -0
  87. package/marketplace-plugins/word/commands/docx-from-md.md +19 -0
  88. package/marketplace-plugins/word/commands/docx-new.md +22 -0
  89. package/marketplace-plugins/word/commands/docx-review.md +29 -0
  90. package/marketplace-plugins/word/skills/document-craft/SKILL.md +61 -0
  91. package/package.json +2 -1
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: Answer a question strictly from the vault, with citations to notes.
3
+ argument-hint: "<query>"
4
+ ---
5
+
6
+ Answer a question using only what the vault contains, with citations.
7
+
8
+ Query = `$ARGUMENTS`. If empty, ask for one and stop.
9
+
10
+ 1. Search `${user_config.OBSIDIAN_VAULT_PATH}` across filenames, tags, and full
11
+ text for notes relevant to the query.
12
+ 2. Read the top matches and synthesize a direct answer in 3–6 sentences.
13
+ 3. Cite every claim with the note it came from as a `[[wikilink]]`. If notes
14
+ disagree, say so and cite both.
15
+ 4. If the vault does not answer the question, say so plainly — do not fill the
16
+ gap from general knowledge unless asked. Offer to capture a note with
17
+ `/second-brain`.
18
+
19
+ Prefer the `obsidian` MCP search tools when available; otherwise grep the vault
20
+ files directly. End with a `Notes searched: N` line.
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: Second Brain (Obsidian)
3
+ description: Conventions for building and maintaining a durable Obsidian knowledge base — atomic and evergreen notes, Zettelkasten linking, PARA structure, Maps of Content, frontmatter, and daily notes. Use when creating, organizing, linking, or searching notes in an Obsidian vault.
4
+ version: 0.1.0
5
+ ---
6
+
7
+ # Second Brain (Obsidian)
8
+
9
+ A second brain is a network of notes, not a folder of documents. Its value is
10
+ in the links, not the storage. Optimize for future retrieval and connection.
11
+
12
+ ## Principles
13
+
14
+ - **Atomic.** One note, one idea. If a note needs "and" in its title, split it.
15
+ - **Evergreen.** Write notes you can reuse, not log entries. Phrase titles as
16
+ claims (`Caching trades freshness for latency`), so the title alone carries
17
+ the idea.
18
+ - **Your own words.** Restate, never paste. Quotes go under `## Source`.
19
+ - **Link first.** A note with no links is lost. Connect every new note to at
20
+ least one existing note while the context is fresh.
21
+ - **Concept over category.** Prefer a link to a tag, and a tag to a folder.
22
+
23
+ ## Note types
24
+
25
+ - **Fleeting** — quick capture, lives in the daily note, processed within a day.
26
+ - **Literature** — your summary of one external source, with the citation.
27
+ - **Permanent** — one durable idea in your own words, densely linked. The core
28
+ of the vault.
29
+
30
+ ## Frontmatter
31
+
32
+ ```md
33
+ ---
34
+ title: <declarative idea>
35
+ created: <YYYY-MM-DD>
36
+ tags: [<topic>]
37
+ type: permanent # fleeting | literature | permanent | moc
38
+ ---
39
+ ```
40
+
41
+ ## Naming and IDs
42
+
43
+ Zettelkasten timestamp prefix keeps notes unique and stable under renames:
44
+ `<YYYYMMDDHHmm> <slug>.md`. The human title lives in frontmatter and the `# H1`.
45
+
46
+ ## Structure (PARA, lightly)
47
+
48
+ - `Projects/` — notes tied to an active outcome with a deadline.
49
+ - `Areas/` — ongoing responsibilities with no end date.
50
+ - `Resources/` — topic notes and references (most permanent notes live here).
51
+ - `Archive/` — inactive items.
52
+ - `Daily/` — dated notes. `MOCs/` — index notes.
53
+
54
+ Folders are for lifecycle, not topic. Topic lives in links and tags.
55
+
56
+ ## Maps of Content (MOCs)
57
+
58
+ When a topic exceeds ~7 notes, make a `<Topic> MOC` that links them under a few
59
+ sub-themes and lists open threads. MOCs are the table of contents you grow into;
60
+ they replace deep folder trees.
61
+
62
+ ## Tags vs links
63
+
64
+ - **Links** (`[[note]]`) connect specific ideas. Prefer them.
65
+ - **Tags** (`#status/draft`, `#topic/edge`) slice across notes by state or theme.
66
+ Keep a small, controlled tag set; an unbounded tag list is noise.
67
+
68
+ ## Daily notes
69
+
70
+ The daily note is the inbox and the journal: capture fleeting thoughts, log what
71
+ happened, link out to permanent notes. Process fleeting notes out of it regularly
72
+ so it never becomes the place ideas go to die.
73
+
74
+ ## Maintenance
75
+
76
+ - After capture, always backlink.
77
+ - Weekly: empty fleeting notes, promote the keepers to permanent, refresh MOCs.
78
+ - Treat orphan notes (zero links) as a backlog to wire in, not as done.
79
+
80
+ ## Anti-patterns
81
+
82
+ - Pasting a source verbatim and calling it a note.
83
+ - Noun-titled notes that collect unrelated facts.
84
+ - Deep folder hierarchies used as a substitute for linking.
85
+ - Tag sprawl: a new tag per note.
86
+ - Capturing without ever linking or revisiting.
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "powerpoint",
3
+ "version": "0.1.0",
4
+ "description": "Build, convert, review, and theme PowerPoint decks from UR — through the Office PowerPoint MCP server (python-pptx, ~32 tools, templates) with a python-pptx fallback.",
5
+ "author": {
6
+ "name": "Maitham Al-rubaye",
7
+ "url": "https://github.com/Maitham16/ur-agent"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/ur-agent/tree/master/marketplace-plugins/powerpoint",
10
+ "repository": "https://github.com/Maitham16/ur-agent",
11
+ "license": "LicenseRef-UR-Agent-Non-Commercial-Self-Responsibility",
12
+ "keywords": ["powerpoint", "pptx", "slides", "presentation", "office", "mcp"],
13
+ "mcpServers": {
14
+ "powerpoint": {
15
+ "command": "uvx",
16
+ "args": ["--from", "office-powerpoint-mcp-server", "ppt_mcp_server"]
17
+ }
18
+ },
19
+ "userConfig": {
20
+ "PPTX_DIR": {
21
+ "type": "directory",
22
+ "title": "Default decks directory",
23
+ "description": "Where new .pptx files are written when no path is given. Defaults to the current working directory."
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,35 @@
1
+ # powerpoint
2
+
3
+ Build, convert, review, and theme PowerPoint decks from any UR session. Backed by
4
+ the **Office PowerPoint MCP server** (python-pptx, ~32 tools with templates and
5
+ themes), with a `python-pptx` fallback so the commands still work headless.
6
+
7
+ ## Commands
8
+
9
+ | Command | Argument | What it does |
10
+ | --- | --- | --- |
11
+ | `/pptx-new` | `<brief \| outline.md>` | Build a deck from a brief or outline, with speaker notes. |
12
+ | `/pptx-from-md` | `<outline.md> [out.pptx]` | Convert a Markdown outline to a sparse deck. |
13
+ | `/pptx-review` | `<file.pptx>` | Critique density, consistency, and design with a verdict. |
14
+ | `/pptx-theme` | `<file.pptx> [template]` | Apply a template/theme and normalize to layouts. |
15
+
16
+ A bundled `deck-craft` skill defines the design conventions all commands follow.
17
+
18
+ ## Setup
19
+
20
+ ```sh
21
+ /plugin install powerpoint@ur-plugins-official
22
+ ```
23
+
24
+ The MCP server runs via `uvx`, so install **uv** once
25
+ (`curl -LsSf https://astral.sh/uv/install.sh | sh`). UR launches
26
+ `uvx --from office-powerpoint-mcp-server ppt_mcp_server` on demand — no manual
27
+ clone. Optionally set **PPTX_DIR** as the default output folder.
28
+
29
+ The fallback uses `python-pptx` (`pip install python-pptx`); install it if you
30
+ want the commands to work without `uvx`.
31
+
32
+ ## Security
33
+
34
+ The server operates on local files only. Re-theming preserves slide content and
35
+ order; reviews never modify the deck.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Convert a Markdown outline into a PowerPoint deck.
3
+ argument-hint: "<path/to/outline.md> [output.pptx]"
4
+ ---
5
+
6
+ Convert a Markdown outline to `.pptx`.
7
+
8
+ 1. Read the source at the first argument. If missing, ask for a path and stop.
9
+ 2. Map structure to slides: `#`→title slide, each `##`→a new slide title,
10
+ bullets→slide bullets (one level of nesting max on screen), a fenced
11
+ `notes:` block or HTML comment→speaker notes, image links→slide images,
12
+ tables→a table or a chart where it reads better.
13
+ 3. Keep slides sparse — push prose into the notes, not onto the slide.
14
+ 4. Write to the second argument if given, else the same basename with `.pptx` in
15
+ `${user_config.PPTX_DIR}` or the current directory.
16
+
17
+ Prefer the `powerpoint` MCP tools; otherwise fall back to `python-pptx`. Report
18
+ the path and the slide count, and flag any slide that ended up text-heavy.
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Build a PowerPoint deck from a brief or an outline.
3
+ argument-hint: "<topic / brief> or <path/to/outline.md>"
4
+ ---
5
+
6
+ Build a `.pptx` from `$ARGUMENTS`. If empty, ask for a topic or outline and stop.
7
+
8
+ 1. Gather the brief: a path → read it as the outline; text → treat as the brief
9
+ and propose a slide outline first for anything non-trivial.
10
+ 2. Plan the deck: title slide, an agenda if there are five or more content
11
+ slides, one idea per content slide, and a clear closing/next-steps slide.
12
+ 3. Build with the deck's layouts and placeholders — title, content, two-content,
13
+ section header — not free-floating text boxes. Keep one idea, few words, and a
14
+ readable type size per slide. Add speaker notes with the detail that does not
15
+ belong on the slide.
16
+ 4. Save to `${user_config.PPTX_DIR}` if set, else the current directory.
17
+
18
+ Prefer the `powerpoint` MCP tools (`create_presentation`, `add_slide`,
19
+ `add_textbox`, `add_chart`, templates). If the server is unavailable, fall back
20
+ to `python-pptx` via Bash. Apply the `deck-craft` conventions. Report the path
21
+ and the slide outline.
@@ -0,0 +1,32 @@
1
+ ---
2
+ description: Critique a PowerPoint deck for density, consistency, and design.
3
+ argument-hint: "<path/to/file.pptx>"
4
+ ---
5
+
6
+ Review the `.pptx` at `$ARGUMENTS`. If empty, ask for a path and stop.
7
+
8
+ Read every slide and report, skipping any section with no findings:
9
+
10
+ ### Density
11
+ Slides over ~6 bullets or ~36 words, walls of text that belong in notes, fonts
12
+ smaller than is readable from the back of a room.
13
+
14
+ ### Consistency
15
+ Inconsistent titles, fonts, colors, or bullet styles across slides; misaligned
16
+ elements; off-template text boxes where a placeholder belongs.
17
+
18
+ ### Design and accessibility
19
+ Low text/background contrast, color used as the only signal, charts without
20
+ labels, images without alt text, missing slide numbers.
21
+
22
+ ### Flow
23
+ Missing agenda or closing, abrupt section changes, a buried key message.
24
+
25
+ ### TL;DR
26
+ End with exactly one of:
27
+ - `TL;DR: Ready to present.`
28
+ - `TL;DR: Minor polish.`
29
+ - `TL;DR: Needs a rework.`
30
+
31
+ Prefer the `powerpoint` MCP tools to read the deck; otherwise inspect it with
32
+ `python-pptx`. Do not modify the file — this command only reports.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Apply a template or theme to a deck and normalize it to the layouts.
3
+ argument-hint: "<file.pptx> [template.pptx | .potx]"
4
+ ---
5
+
6
+ Re-theme the deck named first in `$ARGUMENTS`.
7
+
8
+ 1. Identify the source deck and, if given, the template (`.pptx`/`.potx`) to
9
+ apply. With no template, normalize the deck to its own slide master and
10
+ layouts instead.
11
+ 2. Apply the theme: move free-floating text into the matching layout
12
+ placeholders, unify fonts and colors to the theme, and keep content intact.
13
+ 3. Preserve every slide's message and order — this restyles, it does not rewrite.
14
+
15
+ Prefer the `powerpoint` MCP tools (template/theme application, layout mapping).
16
+ If unavailable, do what `python-pptx` allows and clearly state what could not be
17
+ remapped automatically. Report which slides changed and any that need a manual
18
+ pass.
@@ -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-agent"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/ur-agent/tree/master/marketplace-plugins/release-notes",
10
+ "repository": "https://github.com/Maitham16/ur-agent",
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-agent"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/ur-agent/tree/master/marketplace-plugins/skill-forge",
10
+ "repository": "https://github.com/Maitham16/ur-agent",
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-agent"
8
+ },
9
+ "homepage": "https://github.com/Maitham16/ur-agent/tree/master/marketplace-plugins/word",
10
+ "repository": "https://github.com/Maitham16/ur-agent",
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
+ }