@openhands/extensions 0.7.2 → 0.9.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/.release-please-manifest.json +1 -1
- package/README.md +4 -2
- package/automations/catalog/jira-issue-to-pr.json +14 -0
- package/automations/index.js +2 -0
- package/integrations/catalog/atlassian.json +78 -3
- package/integrations/catalog/datadog.json +33 -2
- package/integrations/catalog/notion.json +16 -16
- package/integrations/catalog/superhuman-mail.json +36 -0
- package/integrations/catalog-index.js +45 -43
- package/marketplaces/openhands-extensions.json +19 -0
- package/package.json +1 -1
- package/plugins/cobol-modernization/skills/build-setup/SKILL.md +1 -0
- package/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +9 -0
- package/plugins/migration-scoring/skills/migration-scoring/SKILL.md +11 -0
- package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +2 -0
- package/plugins/openhands/SKILL.md +7 -0
- package/plugins/release-notes/SKILL.md +9 -0
- package/pyproject.toml +1 -1
- package/python/openhands_extensions/_version.py +1 -1
- package/scripts/build-skills-catalog.mjs +1 -1
- package/skills/add-skill/SKILL.md +2 -0
- package/skills/azure-devops/SKILL.md +12 -1
- package/skills/bitbucket-cloud/SKILL.md +11 -0
- package/skills/code-review/SKILL.md +1 -0
- package/skills/datadog/SKILL.md +3 -1
- package/skills/datadog/references/windows.md +45 -0
- package/skills/discord/SKILL.md +2 -0
- package/skills/docker/SKILL.md +5 -1
- package/skills/github/SKILL.md +3 -1
- package/skills/github/references/windows.md +48 -0
- package/skills/github-pr-review/SKILL.md +1 -0
- package/skills/github-pr-review/references/windows.md +47 -0
- package/skills/github-pr-reviewer/SKILL.md +1 -0
- package/skills/github-pr-reviewer/references/windows.md +61 -0
- package/skills/github-repo-monitor/SKILL.md +1 -0
- package/skills/github-repo-monitor/references/windows.md +61 -0
- package/skills/gitlab/SKILL.md +3 -1
- package/skills/incident-retrospective/SKILL.md +2 -0
- package/skills/index.js +45 -30
- package/skills/iterate/SKILL.md +1 -0
- package/skills/iterate/references/windows.md +41 -0
- package/skills/jira-issue-to-pr/.plugin/plugin.json +19 -0
- package/skills/jira-issue-to-pr/README.md +56 -0
- package/skills/jira-issue-to-pr/SKILL.md +216 -0
- package/skills/jira-issue-to-pr/references/setup.md +170 -0
- package/skills/jira-issue-to-pr/scripts/main.py +341 -0
- package/skills/jupyter/SKILL.md +7 -1
- package/skills/kubernetes/SKILL.md +2 -1
- package/skills/kubernetes/references/windows.md +38 -0
- package/skills/linear/SKILL.md +2 -0
- package/skills/linear/references/windows.md +29 -0
- package/skills/linear-triage/SKILL.md +2 -0
- package/skills/notion/SKILL.md +2 -0
- package/skills/notion/references/windows.md +43 -0
- package/skills/openhands-api/SKILL.md +1 -0
- package/skills/openhands-api/references/windows.md +44 -0
- package/skills/openhands-automation/SKILL.md +1 -0
- package/skills/openhands-automation/references/custom-automation.md +20 -0
- package/skills/openhands-automation/references/windows.md +57 -0
- package/skills/pdflatex/SKILL.md +3 -1
- package/skills/plain-english-content/.plugin/plugin.json +15 -0
- package/skills/plain-english-content/README.md +12 -0
- package/skills/plain-english-content/SKILL.md +78 -0
- package/skills/research-brief/SKILL.md +2 -0
- package/skills/skill-creator/SKILL.md +1 -0
- package/skills/skill-creator/references/windows.md +30 -0
- package/skills/slack-channel-monitor/SKILL.md +1 -0
- package/skills/slack-channel-monitor/references/windows.md +64 -0
- package/skills/slack-standup-digest/SKILL.md +2 -0
- package/skills/spark-version-upgrade/SKILL.md +2 -1
- package/skills/ssh/SKILL.md +2 -1
- package/skills/ssh/references/windows.md +59 -0
- package/skills/swift-linux/SKILL.md +2 -1
- package/skills/vercel/SKILL.md +5 -0
- package/tests/test_catalogs.py +6 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "plain-english-content",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Write and edit clear, accessible prose in a plain English content style: active voice, front-loaded content, sentence case, and accessible formatting.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "OpenHands",
|
|
7
|
+
"email": "contact@all-hands.dev"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/OpenHands/extensions",
|
|
10
|
+
"repository": "https://github.com/OpenHands/extensions",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"plain-english"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Plain English content skill
|
|
2
|
+
|
|
3
|
+
This skill helps OpenHands write and edit clear, accessible prose in a plain English content style.
|
|
4
|
+
It focuses on active voice, front-loaded structure, sentence case, accessible formatting, and public-facing guidance conventions.
|
|
5
|
+
|
|
6
|
+
Use it for:
|
|
7
|
+
|
|
8
|
+
- rewriting reports, research summaries and guidance in plain English
|
|
9
|
+
- checking public-facing documentation for clarity and accessibility issues
|
|
10
|
+
- briefing another agent to produce clear, accessible prose
|
|
11
|
+
|
|
12
|
+
The skill was imported and adapted from this public gist: <https://gist.github.com/fofr/505e225f9bf5e839d30c12ba6bfa0be2>.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plain-english-content
|
|
3
|
+
description: >
|
|
4
|
+
This skill should be used when the user asks to "write in plain English",
|
|
5
|
+
"make this easier to read", "rewrite guidance", "improve report clarity",
|
|
6
|
+
or produce accessible public-facing prose. It applies plain English content
|
|
7
|
+
design principles: active voice, front-loaded content, sentence case, and no
|
|
8
|
+
bold or italics for emphasis.
|
|
9
|
+
license: MIT
|
|
10
|
+
triggers:
|
|
11
|
+
- plain English
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
Open content up so anyone can understand it the first time they read it, without losing substance, nuance or precision. Aim to open up, not dumb down. Apply the GOV.UK style guide approach: plain English, user needs first, active voice, front-loaded structure and accessible formatting.
|
|
15
|
+
|
|
16
|
+
Use this skill for reports, research write-ups, guidance, documentation, summaries, and public-facing prose where clarity and accessibility matter. When writing a report, default to this style. When briefing a research agent, pass this skill so the report follows the same style.
|
|
17
|
+
|
|
18
|
+
## Content design principles
|
|
19
|
+
|
|
20
|
+
- Start from the user need. Write what the reader needs to know to do or decide something, not what the writer wants to say.
|
|
21
|
+
- Front-load everything. Put the most important point first in the document, each section, each paragraph and each sentence. Use the inverted pyramid: conclusion first, then detail, then background.
|
|
22
|
+
- Keep one idea per sentence and one topic per paragraph. Split sentences that contain more than one idea.
|
|
23
|
+
- Be specific and concrete. Give the number, name and date. Cut vague abstractions like "a range of", "going forward" and "in terms of".
|
|
24
|
+
- Cut everything that does not add meaning. Shorter is clearer. Remove duplication.
|
|
25
|
+
|
|
26
|
+
## Plain English
|
|
27
|
+
|
|
28
|
+
- Open content up, do not dumb it down. Keep the substance, nuance and precision. Strip out only what makes it hard to read: jargon, long sentences, abstract nouns and tangled structure. Make the content clear enough for a non-specialist and precise enough for an expert.
|
|
29
|
+
- Use the active voice. Say who does what. Write "We reviewed the data", not "The data was reviewed".
|
|
30
|
+
- Keep sentences short: about 15 to 20 words, and rarely more than 25. Keep paragraphs short.
|
|
31
|
+
- Use everyday words. Replace jargon and formal wording with plain alternatives:
|
|
32
|
+
- use, not utilise or leverage
|
|
33
|
+
- help, not facilitate or empower
|
|
34
|
+
- work with, not collaborate, liaise or engage with
|
|
35
|
+
- make or provide, not deliver
|
|
36
|
+
- about, not in relation to or with regard to
|
|
37
|
+
- so, not in order to
|
|
38
|
+
- start, not commence
|
|
39
|
+
- end, not terminate
|
|
40
|
+
- buy, not purchase
|
|
41
|
+
- enough, not sufficient
|
|
42
|
+
- solve, fix or deal with, not tackle or combat
|
|
43
|
+
- effect on, not impact on
|
|
44
|
+
- Do not use impact as a verb.
|
|
45
|
+
- Avoid metaphors and cliches: drive, unlock, deep dive, robust, key, ring-fence, hub, portal, landscape, ecosystem and going forward.
|
|
46
|
+
- Address the reader as "you". Write about the organisation as "we". Use "they", "them" and "their" rather than gendered pronouns. Write "disabled people", not "the disabled".
|
|
47
|
+
- Use contractions for a warmer tone when appropriate, such as "we'll" and "you'll". Avoid negative contractions: write "cannot", not "can't". Avoid "should've", "could've" and "would've".
|
|
48
|
+
|
|
49
|
+
## Formatting
|
|
50
|
+
|
|
51
|
+
- Do not use bold or italics for emphasis. Plain words and good structure carry the meaning. Use bold only for a literal interface element in an instruction, for example: select Save. Use single quotation marks for the titles of schemes or documents, not italics.
|
|
52
|
+
- Use sentence case everywhere: headings, titles and table headers. Capitalise only proper nouns.
|
|
53
|
+
- Front-load headings, keep them under about 65 characters, and make them unique and descriptive. Do not use a full stop, dash, slash or question mark in headings. Use headings to help readers skim.
|
|
54
|
+
- Introduce bullet lists with a lead-in line that ends in a colon. Start each bullet lowercase. Keep each bullet to one idea. Do not put "and" or "or" after each bullet. Do not use semicolons. Do not use a full stop after the last bullet unless the bullet is a full sentence.
|
|
55
|
+
- Use a numbered list only for steps readers must follow in order. Write steps as full sentences that end with a full stop. Do not use a lead-in colon.
|
|
56
|
+
- Use descriptive link text that says where the link goes and front-loads the key words. Never write "click here" or "read more". Make link text understandable out of context.
|
|
57
|
+
- Do not use Latin abbreviations. Write "for example" not "eg", "that is" not "ie", and "and so on" or "such as" not "etc". Latin abbreviations confuse some readers and screen readers.
|
|
58
|
+
- Write "and", not "&", except in a registered name or logo.
|
|
59
|
+
- Write "one", but use numerals from 2 upwards. Use the % symbol with numerals, such as 50%. Use £ with no decimals unless there are pence: £75, £75.50. Spell out millions and billions, such as £5 million. Write ranges with "to", not a hyphen: 10 to 20, Monday to Friday.
|
|
60
|
+
- Write dates as "4 June 2026" with no comma or ordinal suffix. Use "to" for ranges, such as "4 to 8 June". Write times as "10am to 11.30am". Use "midday" and "midnight".
|
|
61
|
+
- Do not use FAQs when the content can meet the user need directly. Do not use exclamation marks. Do not use all caps for emphasis.
|
|
62
|
+
|
|
63
|
+
## Before finishing: self-check
|
|
64
|
+
|
|
65
|
+
- Is the single most important thing first?
|
|
66
|
+
- Could a non-expert understand every sentence on first read?
|
|
67
|
+
- Is every sentence active, short and focused on one idea?
|
|
68
|
+
- Have all bold or italic emphasis, jargon, Latin abbreviations and marketing language been removed?
|
|
69
|
+
- Is everything in sentence case, with descriptive headings and links?
|
|
70
|
+
- Can any more words be cut without losing meaning? If yes, cut them.
|
|
71
|
+
|
|
72
|
+
## Scope note
|
|
73
|
+
|
|
74
|
+
The no-bold and formatting rules apply to produced prose, such as reports, guidance and summaries. Keep the conventions of code, data tables and direct quotations. Markdown headings and lists are acceptable because they provide structure, not emphasis.
|
|
75
|
+
|
|
76
|
+
## Source
|
|
77
|
+
|
|
78
|
+
Imported and adapted from the public gist at https://gist.github.com/fofr/505e225f9bf5e839d30c12ba6bfa0be2.
|
|
@@ -87,6 +87,8 @@ curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \
|
|
|
87
87
|
}'
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
+
PowerShell note: use `curl.exe` for this exact flag syntax, and replace `${OPENHANDS_HOST}` / `$OPENHANDS_AUTOMATION_API_KEY` with `$env:OPENHANDS_HOST` / `$env:OPENHANDS_AUTOMATION_API_KEY` if running it natively.
|
|
91
|
+
|
|
90
92
|
### Step 5 — Confirm
|
|
91
93
|
|
|
92
94
|
Tell the user:
|
|
@@ -6,6 +6,7 @@ description: This skill should be used when the user wants to "create a skill",
|
|
|
6
6
|
# Skill Creator
|
|
7
7
|
|
|
8
8
|
This skill provides guidance for creating effective skills.
|
|
9
|
+
Windows PowerShell equivalents for the Unix shell commands used in examples are in `references/windows.md`.
|
|
9
10
|
|
|
10
11
|
## About Skills
|
|
11
12
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Windows Notes for Skill Creation Commands
|
|
2
|
+
|
|
3
|
+
Use these PowerShell equivalents for the Unix shell examples in this skill.
|
|
4
|
+
|
|
5
|
+
## Create a Skill Directory
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
New-Item -ItemType Directory -Force skill-name\references,skill-name\scripts,skill-name\assets | Out-Null
|
|
9
|
+
New-Item -ItemType File -Force skill-name\SKILL.md | Out-Null
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Run Helper Scripts
|
|
13
|
+
|
|
14
|
+
Use `python` if `python3` is not available:
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
python scripts\init_skill.py <skill-name> --path <output-directory>
|
|
18
|
+
python scripts\quick_validate.py <path\to\skill-folder>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Search and Extract Text
|
|
22
|
+
|
|
23
|
+
PowerShell alternatives for common Unix text tools:
|
|
24
|
+
|
|
25
|
+
```powershell
|
|
26
|
+
Select-String -Path SKILL.md -Pattern "^name:"
|
|
27
|
+
Get-Content SKILL.md | Select-Object -First 20
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If a repository already provides `rg`, prefer it for recursive searches because it works well on Windows too.
|
|
@@ -15,6 +15,7 @@ triggers:
|
|
|
15
15
|
# Slack Channel Monitor
|
|
16
16
|
|
|
17
17
|
Create a cron automation that polls up to 10 Slack channels every minute.
|
|
18
|
+
Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in `references/windows.md`.
|
|
18
19
|
When a message containing the **trigger phrase** (default: `@openhands`) is
|
|
19
20
|
detected it:
|
|
20
21
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Windows Notes for Slack Channel Monitor Setup
|
|
2
|
+
|
|
3
|
+
Use these PowerShell forms when creating the Slack monitor automation from Windows.
|
|
4
|
+
|
|
5
|
+
## Validate Slack Tokens
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
curl.exe -s https://slack.com/api/auth.test `
|
|
9
|
+
-H "Authorization: Bearer $env:SLACK_BOT_TOKEN" |
|
|
10
|
+
python -c "import json,sys; d=json.load(sys.stdin); print('ok' if d.get('ok') else d.get('error'))"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For a user token, replace `$env:SLACK_BOT_TOKEN` with `$env:SLACK_USER_TOKEN`.
|
|
14
|
+
|
|
15
|
+
## Build Directory, Syntax Check, and Integrity Check
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
$buildDir = Join-Path $env:TEMP "slack-monitor-build"
|
|
19
|
+
New-Item -ItemType Directory -Force $buildDir | Out-Null
|
|
20
|
+
$main = Join-Path $buildDir "main.py"
|
|
21
|
+
# copy scripts/main.py to $main, then replace only the configuration constants
|
|
22
|
+
|
|
23
|
+
python -m py_compile $main
|
|
24
|
+
Select-String -Path $main -Pattern 'TRIGGER_PHRASE = "'
|
|
25
|
+
Select-String -Path $main -Pattern 'CHANNEL_IDS: list\[str\] ='
|
|
26
|
+
Select-String -Path $main -Pattern 'DEFAULT_OPENHANDS_URL = "'
|
|
27
|
+
Select-String -Path $main -Pattern 'def get_secret'
|
|
28
|
+
Select-String -Path $main -Pattern 'def _state_file_path'
|
|
29
|
+
Select-String -Path $main -Pattern 'def create_conversation'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Package and Upload
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
$tarball = Join-Path $env:TEMP "slack-monitor.tar.gz"
|
|
36
|
+
tar.exe -czf $tarball -C $buildDir .
|
|
37
|
+
|
|
38
|
+
$upload = curl.exe -s -X POST `
|
|
39
|
+
"$env:OPENHANDS_HOST/api/automation/v1/uploads?name=slack-channel-monitor" `
|
|
40
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
41
|
+
-H "Content-Type: application/gzip" `
|
|
42
|
+
--data-binary "@$tarball" | ConvertFrom-Json
|
|
43
|
+
|
|
44
|
+
$tarballPath = $upload.tarball_path
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Create the Automation
|
|
48
|
+
|
|
49
|
+
```powershell
|
|
50
|
+
$body = @"
|
|
51
|
+
{
|
|
52
|
+
"name": "Slack Channel Monitor",
|
|
53
|
+
"trigger": {"type": "cron", "schedule": "* * * * *"},
|
|
54
|
+
"tarball_path": "$tarballPath",
|
|
55
|
+
"entrypoint": "python3 main.py",
|
|
56
|
+
"timeout": 55
|
|
57
|
+
}
|
|
58
|
+
"@
|
|
59
|
+
|
|
60
|
+
curl.exe -s -X POST "$env:OPENHANDS_HOST/api/automation/v1" `
|
|
61
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
62
|
+
-H "Content-Type: application/json" `
|
|
63
|
+
-d $body
|
|
64
|
+
```
|
|
@@ -80,6 +80,8 @@ curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \
|
|
|
80
80
|
}'
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
PowerShell note: use `curl.exe` for this exact flag syntax, and replace `${OPENHANDS_HOST}` / `$OPENHANDS_AUTOMATION_API_KEY` with `$env:OPENHANDS_HOST` / `$env:OPENHANDS_AUTOMATION_API_KEY` if running it natively.
|
|
84
|
+
|
|
83
85
|
### Step 5 — Confirm
|
|
84
86
|
|
|
85
87
|
Tell the user:
|
|
@@ -44,6 +44,7 @@ https://spark.apache.org/docs/latest/migration-guide.html
|
|
|
44
44
|
- [ ] Identify target Spark version
|
|
45
45
|
- [ ] Search for deprecated APIs: `grep -rn 'import org.apache.spark' --include='*.scala' --include='*.java' --include='*.py'`
|
|
46
46
|
- [ ] List all Spark config properties: `grep -rn 'spark\.' --include='*.conf' --include='*.properties' --include='*.scala' --include='*.java' --include='*.py' | grep -v 'test'`
|
|
47
|
+
- [ ] On Windows PowerShell, use `Get-ChildItem -Recurse -Include *.scala,*.java,*.py | Select-String 'import org.apache.spark'` and adjust the extensions/pattern for config searches.
|
|
47
48
|
- [ ] Check for custom `SparkSession` or `SparkContext` extensions
|
|
48
49
|
- [ ] Identify connector dependencies (Hive, Kafka, Cassandra, Delta, Iceberg)
|
|
49
50
|
- [ ] Document findings in `spark_upgrade_impact.md`
|
|
@@ -230,4 +231,4 @@ Spark SQL behavior changes between versions can silently alter query results.
|
|
|
230
231
|
✓ No removed APIs remain in code
|
|
231
232
|
✓ Configuration properties are current
|
|
232
233
|
✓ SQL queries produce correct results
|
|
233
|
-
✓ Upgrade impact documented in `spark_upgrade_impact.md`
|
|
234
|
+
✓ Upgrade impact documented in `spark_upgrade_impact.md`
|
package/skills/ssh/SKILL.md
CHANGED
|
@@ -14,6 +14,7 @@ triggers:
|
|
|
14
14
|
# SSH Skill
|
|
15
15
|
|
|
16
16
|
This skill provides capabilities for establishing and managing SSH connections to remote machines.
|
|
17
|
+
Windows PowerShell equivalents for SSH config creation, key paths, ssh-agent, and permissions are in `references/windows.md`.
|
|
17
18
|
|
|
18
19
|
## Capabilities
|
|
19
20
|
|
|
@@ -132,4 +133,4 @@ chmod 600 ~/.ssh/id_ed25519
|
|
|
132
133
|
chmod 644 ~/.ssh/id_ed25519.pub
|
|
133
134
|
# Set correct permissions for SSH directory
|
|
134
135
|
chmod 700 ~/.ssh
|
|
135
|
-
```
|
|
136
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Windows Notes for SSH Commands
|
|
2
|
+
|
|
3
|
+
Windows includes OpenSSH Client on current Windows versions. Use these PowerShell forms for Windows-native setup.
|
|
4
|
+
|
|
5
|
+
## Key Paths
|
|
6
|
+
|
|
7
|
+
Use the Windows profile path:
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
$sshDir = Join-Path $env:USERPROFILE ".ssh"
|
|
11
|
+
New-Item -ItemType Directory -Force $sshDir | Out-Null
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Generate and Use a Key
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
$key = Join-Path $sshDir "key_name"
|
|
18
|
+
ssh-keygen -t ed25519 -f $key -C "comment" -N ""
|
|
19
|
+
ssh -i $key username@hostname
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Create SSH Config
|
|
23
|
+
|
|
24
|
+
```powershell
|
|
25
|
+
$config = Join-Path $sshDir "config"
|
|
26
|
+
@'
|
|
27
|
+
Host alias
|
|
28
|
+
HostName hostname_or_ip
|
|
29
|
+
User username
|
|
30
|
+
IdentityFile ~/.ssh/key_name
|
|
31
|
+
Port 22
|
|
32
|
+
ServerAliveInterval 60
|
|
33
|
+
'@ | Set-Content -LiteralPath $config -Encoding ascii
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Start ssh-agent
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
Set-Service ssh-agent -StartupType Automatic
|
|
40
|
+
Start-Service ssh-agent
|
|
41
|
+
ssh-add $key
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Permissions
|
|
45
|
+
|
|
46
|
+
POSIX `chmod 600` does not apply to Windows filesystems. Restrict private-key ACLs with `icacls`:
|
|
47
|
+
|
|
48
|
+
```powershell
|
|
49
|
+
icacls $key /inheritance:r
|
|
50
|
+
icacls $key /grant:r "${env:USERNAME}:R"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Copy a Public Key
|
|
54
|
+
|
|
55
|
+
`ssh-copy-id` is usually not installed on Windows. For Unix-like remotes, append the key with SSH:
|
|
56
|
+
|
|
57
|
+
```powershell
|
|
58
|
+
Get-Content "$key.pub" | ssh username@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
|
|
59
|
+
```
|
|
@@ -12,6 +12,7 @@ triggers:
|
|
|
12
12
|
This document provides instructions for installing Swift on Debian 12 (Bookworm).
|
|
13
13
|
|
|
14
14
|
> This setup is intended for non-UI development tasks on Swift on Linux.
|
|
15
|
+
> On Windows, run these Debian commands inside WSL2 or a Linux container. For native Windows Swift, use the Windows toolchain from Swift.org instead.
|
|
15
16
|
|
|
16
17
|
## Prerequisites
|
|
17
18
|
|
|
@@ -78,4 +79,4 @@ Verify that Swift is correctly installed by running:
|
|
|
78
79
|
|
|
79
80
|
```bash
|
|
80
81
|
swift --version
|
|
81
|
-
```
|
|
82
|
+
```
|
package/skills/vercel/SKILL.md
CHANGED
|
@@ -40,6 +40,11 @@ To allow agents and automated systems to access protected deployments, users nee
|
|
|
40
40
|
```bash
|
|
41
41
|
curl -H "x-vercel-protection-bypass: <secret>" https://your-preview-url.vercel.app
|
|
42
42
|
```
|
|
43
|
+
|
|
44
|
+
PowerShell equivalent:
|
|
45
|
+
```powershell
|
|
46
|
+
Invoke-WebRequest -Headers @{ "x-vercel-protection-bypass" = "<secret>" } -Uri https://your-preview-url.vercel.app
|
|
47
|
+
```
|
|
43
48
|
|
|
44
49
|
**As a Query Parameter:**
|
|
45
50
|
```
|
package/tests/test_catalogs.py
CHANGED
|
@@ -79,9 +79,14 @@ def test_remote_no_auth_mcp_entries_are_intentionally_public():
|
|
|
79
79
|
for entry in load_catalog_entries("integrations/catalog"):
|
|
80
80
|
for option in entry["connectionOptions"]:
|
|
81
81
|
transport = option.get("transport", {})
|
|
82
|
+
# An option with `headerFields` still requires the user to supply
|
|
83
|
+
# credentials (just via named headers, e.g. Datadog's
|
|
84
|
+
# DD-API-KEY/DD-APPLICATION-KEY), so it is NOT "public/no-auth".
|
|
85
|
+
has_header_credentials = bool(transport.get("headerFields"))
|
|
82
86
|
if (
|
|
83
87
|
option["provider"] == "mcp"
|
|
84
88
|
and option["auth"]["strategy"] == "none"
|
|
89
|
+
and not has_header_credentials
|
|
85
90
|
and transport.get("url", "").startswith("https://")
|
|
86
91
|
):
|
|
87
92
|
actual.add(entry["id"])
|
|
@@ -98,7 +103,7 @@ def test_credential_fields_have_helper_text_and_link():
|
|
|
98
103
|
for entry in load_catalog_entries("integrations/catalog"):
|
|
99
104
|
for option in entry["connectionOptions"]:
|
|
100
105
|
transport = option.get("transport", {})
|
|
101
|
-
for field_group in ("envFields", "argFields"):
|
|
106
|
+
for field_group in ("envFields", "argFields", "headerFields"):
|
|
102
107
|
for field in transport.get(field_group, []):
|
|
103
108
|
if field.get("type") == "password":
|
|
104
109
|
field_key = field.get("key", "<unknown>")
|