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.
- package/CHANGELOG.md +25 -2
- package/CONTRIBUTING.md +21 -0
- package/LICENSE +1 -1
- package/QUALITY.md +5 -2
- package/README.md +83 -16
- package/RELEASE.md +54 -0
- package/SECURITY.md +22 -0
- package/bin/ur.js +5 -5
- package/dist/cli.js +5423 -4655
- package/docs/AGENT_FEATURES.md +8 -0
- package/docs/AGENT_UPGRADE_1.15.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.16.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.17.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.18.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.19.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.20.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.21.0.md +1 -1
- package/docs/AGENT_UPGRADE_1.22.0.md +1 -1
- package/docs/CODE_FEATURE_INVENTORY.md +9 -3
- package/docs/DEVELOPMENT.md +8 -4
- package/docs/USAGE.md +18 -1
- package/docs/VALIDATION.md +4 -4
- package/docs/plugins.md +52 -0
- package/documentation/README.md +2 -2
- package/documentation/app.js +5 -5
- package/documentation/assets/ur-architecture.svg +1 -1
- package/documentation/index.html +15 -11
- package/package.json +11 -6
- package/plugins/bunBundleDev.ts +32 -0
- package/plugins/community/.gitkeep +1 -0
- package/plugins/core/README.md +69 -0
- package/plugins/core/code-review/.ur-plugin/plugin.json +13 -0
- package/plugins/core/code-review/README.md +37 -0
- package/plugins/core/code-review/commands/code-review.md +47 -0
- package/plugins/core/engineering-discipline/.ur-plugin/plugin.json +33 -0
- package/plugins/core/engineering-discipline/README.md +21 -0
- package/plugins/core/engineering-discipline/commands/discipline-check.md +25 -0
- package/plugins/core/engineering-discipline/skills/reproducible-release/SKILL.md +31 -0
- package/plugins/core/engineering-discipline/templates/release-verifier.md +18 -0
- package/plugins/core/engineering-discipline/validators/release-gate.json +7 -0
- package/plugins/core/evaluate-response/.ur-plugin/plugin.json +13 -0
- package/plugins/core/evaluate-response/README.md +42 -0
- package/plugins/core/evaluate-response/commands/evaluate-response.md +61 -0
- package/plugins/core/explain-error/.ur-plugin/plugin.json +13 -0
- package/plugins/core/explain-error/README.md +32 -0
- package/plugins/core/explain-error/commands/explain-error.md +37 -0
- package/plugins/core/git-summary/.ur-plugin/plugin.json +13 -0
- package/plugins/core/git-summary/README.md +29 -0
- package/plugins/core/git-summary/commands/git-summary.md +27 -0
- package/plugins/core/github/.ur-plugin/plugin.json +31 -0
- package/plugins/core/github/README.md +37 -0
- package/plugins/core/github/commands/gh-issues.md +19 -0
- package/plugins/core/github/commands/gh-pr-create.md +19 -0
- package/plugins/core/github/commands/gh-pr-review.md +37 -0
- package/plugins/core/github/commands/gh-repo-health.md +23 -0
- package/plugins/core/github/skills/github-workflow/SKILL.md +53 -0
- package/plugins/core/gitlab/.ur-plugin/plugin.json +39 -0
- package/plugins/core/gitlab/README.md +39 -0
- package/plugins/core/gitlab/commands/gl-issues.md +19 -0
- package/plugins/core/gitlab/commands/gl-mr-create.md +19 -0
- package/plugins/core/gitlab/commands/gl-mr-review.md +36 -0
- package/plugins/core/gitlab/commands/gl-pipeline.md +21 -0
- package/plugins/core/gitlab/skills/gitlab-workflow/SKILL.md +63 -0
- package/plugins/core/hello/.ur-plugin/plugin.json +13 -0
- package/plugins/core/hello/README.md +45 -0
- package/plugins/core/hello/commands/hello.md +16 -0
- package/plugins/core/huggingface/.ur-plugin/plugin.json +36 -0
- package/plugins/core/huggingface/README.md +36 -0
- package/plugins/core/huggingface/commands/hf-dataset-search.md +19 -0
- package/plugins/core/huggingface/commands/hf-download.md +23 -0
- package/plugins/core/huggingface/commands/hf-model-card.md +23 -0
- package/plugins/core/huggingface/commands/hf-model-search.md +20 -0
- package/plugins/core/huggingface/skills/huggingface-workflow/SKILL.md +70 -0
- package/plugins/core/miro/.ur-plugin/plugin.json +27 -0
- package/plugins/core/miro/README.md +39 -0
- package/plugins/core/miro/commands/miro-board.md +17 -0
- package/plugins/core/miro/commands/miro-diagram.md +20 -0
- package/plugins/core/miro/commands/miro-export.md +18 -0
- package/plugins/core/miro/commands/miro-stickies.md +19 -0
- package/plugins/core/miro/skills/miro-workflow/SKILL.md +54 -0
- package/plugins/core/obsidian/.ur-plugin/plugin.json +42 -0
- package/plugins/core/obsidian/README.md +42 -0
- package/plugins/core/obsidian/commands/backlinks.md +22 -0
- package/plugins/core/obsidian/commands/daily-note.md +29 -0
- package/plugins/core/obsidian/commands/moc.md +24 -0
- package/plugins/core/obsidian/commands/second-brain.md +37 -0
- package/plugins/core/obsidian/commands/vault-search.md +20 -0
- package/plugins/core/obsidian/skills/second-brain/SKILL.md +86 -0
- package/plugins/core/powerpoint/.ur-plugin/plugin.json +26 -0
- package/plugins/core/powerpoint/README.md +35 -0
- package/plugins/core/powerpoint/commands/pptx-from-md.md +18 -0
- package/plugins/core/powerpoint/commands/pptx-new.md +21 -0
- package/plugins/core/powerpoint/commands/pptx-review.md +32 -0
- package/plugins/core/powerpoint/commands/pptx-theme.md +18 -0
- package/plugins/core/powerpoint/skills/deck-craft/SKILL.md +60 -0
- package/plugins/core/release-notes/.ur-plugin/plugin.json +13 -0
- package/plugins/core/release-notes/README.md +28 -0
- package/plugins/core/release-notes/commands/release-notes.md +56 -0
- package/plugins/core/skill-forge/.ur-plugin/plugin.json +13 -0
- package/plugins/core/skill-forge/README.md +37 -0
- package/plugins/core/skill-forge/commands/forge-skill.md +47 -0
- package/plugins/core/skill-forge/commands/skill-refine.md +19 -0
- package/plugins/core/skill-forge/skills/skill-authoring/SKILL.md +84 -0
- package/plugins/core/word/.ur-plugin/plugin.json +26 -0
- package/plugins/core/word/README.md +37 -0
- package/plugins/core/word/commands/docx-edit.md +18 -0
- package/plugins/core/word/commands/docx-from-md.md +19 -0
- package/plugins/core/word/commands/docx-new.md +22 -0
- package/plugins/core/word/commands/docx-review.md +29 -0
- package/plugins/core/word/skills/document-craft/SKILL.md +61 -0
- package/plugins/examples/README.md +12 -0
- package/plugins/examples/command-template/.ur-plugin/plugin.json +12 -0
- package/plugins/examples/command-template/README.md +9 -0
- 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,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.
|