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.
- package/CHANGELOG.md +23 -0
- package/QUALITY.md +5 -2
- package/README.md +41 -9
- package/dist/cli.js +5608 -4634
- package/docs/AGENT_FEATURES.md +8 -0
- package/docs/CODE_FEATURE_INVENTORY.md +6 -0
- package/docs/DEVELOPMENT.md +3 -2
- package/docs/USAGE.md +3 -1
- package/documentation/app.js +3 -3
- package/documentation/index.html +9 -5
- package/marketplace-plugins/README.md +69 -0
- package/marketplace-plugins/code-review/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/code-review/README.md +37 -0
- package/marketplace-plugins/code-review/commands/code-review.md +47 -0
- package/marketplace-plugins/engineering-discipline/.ur-plugin/plugin.json +33 -0
- package/marketplace-plugins/engineering-discipline/README.md +21 -0
- package/marketplace-plugins/engineering-discipline/commands/discipline-check.md +25 -0
- package/marketplace-plugins/engineering-discipline/skills/reproducible-release/SKILL.md +31 -0
- package/marketplace-plugins/engineering-discipline/templates/release-verifier.md +18 -0
- package/marketplace-plugins/engineering-discipline/validators/release-gate.json +7 -0
- package/marketplace-plugins/evaluate-response/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/evaluate-response/README.md +42 -0
- package/marketplace-plugins/evaluate-response/commands/evaluate-response.md +61 -0
- package/marketplace-plugins/explain-error/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/explain-error/README.md +32 -0
- package/marketplace-plugins/explain-error/commands/explain-error.md +37 -0
- package/marketplace-plugins/git-summary/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/git-summary/README.md +29 -0
- package/marketplace-plugins/git-summary/commands/git-summary.md +27 -0
- package/marketplace-plugins/github/.ur-plugin/plugin.json +31 -0
- package/marketplace-plugins/github/README.md +37 -0
- package/marketplace-plugins/github/commands/gh-issues.md +19 -0
- package/marketplace-plugins/github/commands/gh-pr-create.md +19 -0
- package/marketplace-plugins/github/commands/gh-pr-review.md +37 -0
- package/marketplace-plugins/github/commands/gh-repo-health.md +23 -0
- package/marketplace-plugins/github/skills/github-workflow/SKILL.md +53 -0
- package/marketplace-plugins/gitlab/.ur-plugin/plugin.json +39 -0
- package/marketplace-plugins/gitlab/README.md +39 -0
- package/marketplace-plugins/gitlab/commands/gl-issues.md +19 -0
- package/marketplace-plugins/gitlab/commands/gl-mr-create.md +19 -0
- package/marketplace-plugins/gitlab/commands/gl-mr-review.md +36 -0
- package/marketplace-plugins/gitlab/commands/gl-pipeline.md +21 -0
- package/marketplace-plugins/gitlab/skills/gitlab-workflow/SKILL.md +63 -0
- package/marketplace-plugins/hello/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/hello/README.md +45 -0
- package/marketplace-plugins/hello/commands/hello.md +16 -0
- package/marketplace-plugins/huggingface/.ur-plugin/plugin.json +36 -0
- package/marketplace-plugins/huggingface/README.md +36 -0
- package/marketplace-plugins/huggingface/commands/hf-dataset-search.md +19 -0
- package/marketplace-plugins/huggingface/commands/hf-download.md +23 -0
- package/marketplace-plugins/huggingface/commands/hf-model-card.md +23 -0
- package/marketplace-plugins/huggingface/commands/hf-model-search.md +20 -0
- package/marketplace-plugins/huggingface/skills/huggingface-workflow/SKILL.md +70 -0
- package/marketplace-plugins/miro/.ur-plugin/plugin.json +27 -0
- package/marketplace-plugins/miro/README.md +39 -0
- package/marketplace-plugins/miro/commands/miro-board.md +17 -0
- package/marketplace-plugins/miro/commands/miro-diagram.md +20 -0
- package/marketplace-plugins/miro/commands/miro-export.md +18 -0
- package/marketplace-plugins/miro/commands/miro-stickies.md +19 -0
- package/marketplace-plugins/miro/skills/miro-workflow/SKILL.md +54 -0
- package/marketplace-plugins/obsidian/.ur-plugin/plugin.json +42 -0
- package/marketplace-plugins/obsidian/README.md +42 -0
- package/marketplace-plugins/obsidian/commands/backlinks.md +22 -0
- package/marketplace-plugins/obsidian/commands/daily-note.md +29 -0
- package/marketplace-plugins/obsidian/commands/moc.md +24 -0
- package/marketplace-plugins/obsidian/commands/second-brain.md +37 -0
- package/marketplace-plugins/obsidian/commands/vault-search.md +20 -0
- package/marketplace-plugins/obsidian/skills/second-brain/SKILL.md +86 -0
- package/marketplace-plugins/powerpoint/.ur-plugin/plugin.json +26 -0
- package/marketplace-plugins/powerpoint/README.md +35 -0
- package/marketplace-plugins/powerpoint/commands/pptx-from-md.md +18 -0
- package/marketplace-plugins/powerpoint/commands/pptx-new.md +21 -0
- package/marketplace-plugins/powerpoint/commands/pptx-review.md +32 -0
- package/marketplace-plugins/powerpoint/commands/pptx-theme.md +18 -0
- package/marketplace-plugins/powerpoint/skills/deck-craft/SKILL.md +60 -0
- package/marketplace-plugins/release-notes/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/release-notes/README.md +28 -0
- package/marketplace-plugins/release-notes/commands/release-notes.md +56 -0
- package/marketplace-plugins/skill-forge/.ur-plugin/plugin.json +13 -0
- package/marketplace-plugins/skill-forge/README.md +37 -0
- package/marketplace-plugins/skill-forge/commands/forge-skill.md +47 -0
- package/marketplace-plugins/skill-forge/commands/skill-refine.md +19 -0
- package/marketplace-plugins/skill-forge/skills/skill-authoring/SKILL.md +84 -0
- package/marketplace-plugins/word/.ur-plugin/plugin.json +26 -0
- package/marketplace-plugins/word/README.md +37 -0
- package/marketplace-plugins/word/commands/docx-edit.md +18 -0
- package/marketplace-plugins/word/commands/docx-from-md.md +19 -0
- package/marketplace-plugins/word/commands/docx-new.md +22 -0
- package/marketplace-plugins/word/commands/docx-review.md +29 -0
- package/marketplace-plugins/word/skills/document-craft/SKILL.md +61 -0
- 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
|
+
}
|