setup-dependencies
Skill0 starsChanged 9 days agoMITView on GitHub
Check capability-specific dependencies, explain missing tools, and install with consent. Covers Pandoc, Pillow, Mermaid CLI, svgexport, jszip, and pinned chart/browser MCP servers. Use after plugin installation, when a skill reports a missing tool, or when checking MCP updates.
- Installs packages
In this repository66 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/bootstrap-project/resources/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- skills/bootstrap-project/resources/CLAUDE.mdCLAUDE.md
- act-tenetsSkill
- adversarial-reviewSkill
- annotate-screenshotSkill
- anti-hallucinationSkill
- ascii-chartSkill
- assess-brainSkill
- big-ideaSkill
- bootstrap-coreSkill
- bootstrap-projectSkill
- browser-toolsSkill
- chart-big-ideaSkill
- chart-interpretationSkill
- chart-vocabularySkill
- code-reviewSkill
- communication-craftSkill
- compile-brainSkill
- convertSkill
- corpus-qa-sweepSkill
- critical-thinkingSkill
- deep-reviewSkill
- doc-hygieneSkill
- docs-shellSkill
- docx-to-mdSkill
- ethical-reasoningSkill
- evaluate-before-adoptingSkill
- figure-generatorSkill
- flint-chartSkill
- flint-interactionsSkill
- flint-themeSkill
- git-workflowSkill
- html-to-mdSkill
- humanizerSkill
- install-visual-companionsSkill
- lint-clean-markdownSkill
- markdown-mermaidSkill
- markdown-sanitization-chainSkill
- md-to-emlSkill
- md-to-htmlSkill
- md-to-txtSkill
- md-to-wordSkill
- meditationSkill
- mutation-testingSkill
- planSkill
- platform-awarenessSkill
- print-svg-style-guideSkill
- proactive-awarenessSkill
- problem-framing-auditSkill
- project-capability-authoringSkill
- project-statusSkill
- render-chartSkill
- render-verifySkill
- rich-emailSkill
- risk-analysisSkill
- security-and-hardeningSkill
- setup-enterprise-stackSkill
- spikeSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 4 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 48
Add --json for a machine-readable version.
- Distinctive: line 92
Before proposing browser setup, inspect the active host's native capabilities.
- Distinctive: line 93
Keep the pinned Playwright fallback for an actual missing or unverified case.
- Very specific: line 103
Use the unified root helper after reviewing its status report and installation scopes.
- Very specific: line 126
Run node <this-skill>/scripts/provision-runtime.mjs with no flags.
- Distinctive: line 142
If registry metadata advertises backend tarballs that npm policy cannot fetch directly, do not enable remote fetching or change the …
- Very specific: line 211
Run provision-runtime.mjs --check-updates.
- Distinctive: line 255
Default to read-only dependency reporting.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Setup Dependencies
Most of this plugin needs nothing beyond Node. Roughly three quarters of its skills run with no external tools at all. This skill handles the rest: document converters that need Pandoc, a few visual skills that use optional render helpers, and two MCP servers that back charts and browser verification.
Nothing here installs without consent. A dependency check is read-only.
Unified Source Setup
The source checkout provides one root helper. Without switches it connects Alex Mall if missing, refreshes only its catalog and reports plugin/dependency versions without installation or activation. Marketplace registration and caches can change; this is not a wholly read-only host operation. The standalone checker below remains read-only.
With -Apply, the helper installs/updates the latest Mall plugin, bootstraps
its owned instructions with conflict checks, then uses that installed package's
dependency registry and launcher. It installs exact reviewed npm pins and only
missing Windows Pandoc (winget) and selected-Python Pillow (configured pip).
Existing system tools are checked, not silently upgraded. Python installation,
forced elevation, agreement acceptance and policy bypasses are excluded.
Missing prerequisites stop dependency installation with setup guidance.
-VerifyOnly adds strict no-install readiness checks but still refreshes that
selected catalog. Unrelated Agency marketplaces, plugins, credentials and MCP
registrations are not refreshed or changed by the helper.
This source flow is separate from the MCP-only provisioner below and from the
helpers preserved inside older immutable release payloads. The checker itself
has no install mode.
Check First
node <this-skill>/scripts/check-dependencies.cjsThe report covers three things: external tools, the MCP servers, and the optional plugins that extend this package. It writes nothing.
Add --json for a machine-readable version.
For MCP packages, the report distinguishes directory presence (installed),
exact metadata and library checks (versionMatched), and a bounded successful
--version launch probe (launchable). Empty package directories are not ready.
present/allPresent require the version and launch checks, not just a folder.
Host connectivity is separate: hostConnected is null and
connectionStatus is not-observed until the host is checked independently.
These probes do not demonstrate API authentication or actual renderer output.
Checker, provisioner, and launcher share runtime selection. The default is
~/.copilot/plugin-data/alex-act-one/runtime; ALEX_ACT_ONE_RUNTIME_ROOT selects
an alternate location. Checker/provisioner --runtime-root <path> takes precedence.
Point the host launcher's environment at that same alternate runtime; choosing a
provisioning path does not rewrite host configuration.
What Is Optional
Nothing outside Node is required to use this package. "Required" is always relative to a capability, so the report sorts every item into three tiers:
| Tier | Meaning | Members |
| Required | The skills that call it cannot run without it | Pandoc (document conversion), Pillow (annotate-screenshot), Flint MCP (chart rendering) |
| Recommended | Those skills run and produce less | Mermaid CLI (diagrams stay unrendered), svgexport (no PNG export), jszip (Word loses table formatting), Playwright MCP (render-verify falls back to the host's browser tools) |
| Add-on | Blocks nothing. Adds capability this package does not have | Visual companions, Microsoft ecosystem plugins |
The two MCP servers are provisioned by one command but they are not equally
important, and the report tiers them separately. Flint is the only one whose
absence stops a skill outright: flint-chart and flint-theme call its tools
throughout and have no fallback. Playwright has one, documented in
render-verify's own description.
The distinction matters when reporting to a user. A missing Pandoc means the affected converters are unavailable and should be named. A missing jszip means one output is plainer. A missing add-on means nothing at all, and telling someone to install one to "fix" a problem is wrong.
Plugin installation is not handled here. install-visual-companions and
setup-enterprise own those flows because they carry the marketplace
registration, the consent gates, and the post-install caveats — several
companions pull roughly 100 MB of Chromium each. This skill reports the state so
one command shows the whole picture; it does not duplicate their install logic.
Before proposing browser setup, inspect the active host's native capabilities. Keep the pinned Playwright fallback for an actual missing or unverified case; neither install it silently nor remove it merely because a native browser exists.
Plugin counts depend on which store the host reads. copilot plugin list
follows COPILOT_HOME when set and ~/.copilot otherwise, and different apps
set different stores, so a plugin installed for one app may not appear for
another. The report prints the store it read for that reason.
Install With Consent
Use the unified root helper after reviewing its
status report and installation scopes. Only its explicit -Apply path changes
plugin, instruction or dependency state. The checker rejects the retired
--apply option before running probes; it cannot start a second unmanaged
npm/pip installation path. For MCP-only setup, use the provisioner below.
MCP Servers
Two pinned servers, provisioned together but tiered differently. They install into plugin-private state and are launched by a direct Node shim, never by npm or npx.
| Pinned package | Tier | Role |
flint-chart-mcp@1.0.1 with flint-chart@1.0.1 | Required | Chart rendering, validated interactive show, and version-matched chart/theme/interaction/board resources. No fallback |
@playwright/mcp@0.0.84 | Recommended | Browser verification. render-verify also works with the host's own browser tools |
Provisioning selects all MCP servers by default. Use --server flint to select
only Flint and its independently exact-pinned library. The launcher checks both
metadata versions before invoking Flint; other server pins remain unchanged.
Procedure:
- Run
node <this-skill>/scripts/provision-runtime.mjswith no flags. It prints the effectivenpm config get registry, the exact package set, and the mutation boundary. It changes nothing. - Show that preview and ask whether to apply it. Installing the plugin is not consent for a separate package-network operation.
- On approval, rerun with
--apply. Success requires exact installed metadata, the server-resolved Flint library where applicable, and a bounded launch probe for each selected server. npm exit zero alone is not readiness. - Reload the host so its MCP processes restart through the direct launcher, then verify the expected MCP tools/connectivity there. No host connection is claimed by the package installation or standalone version probe.
Metadata, plugin-inventory, and installation subprocesses have finite waits; timeout/startup failures remain explicit. A failed install or verification can leave partial package state and must not be reported as provisioned successfully.
If registry metadata advertises backend tarballs that npm policy cannot fetch
directly, do not enable remote fetching or change the registry. The source
helpers recognize only the configured https://packagefeedproxy.microsoft.io/npm/
endpoint and preview its confirmed Microsoft backend prefix automatically.
With npm 12+ and normal installation consent, matching tarballs are routed
through that registry for the install command only. No corporate-network
inference, persistent npm edits, retries, or broader routing occur.
--registry-tarball-prefix <HTTPS-prefix/> overrides detection with a separately
confirmed explicit prefix. Other registries require that explicit selection.
The root PowerShell helper uses the same detection and previews it; its
-VerifyOnly mode applies no routing and fetches no packages. The immutable
0.9.5 package predates automatic detection.
The provisioner installs nothing globally and never passes --registry or edits
.npmrc. Whatever registry the user has configured is the one it uses.
Registering The Servers With Microsoft Scout
Provisioning puts the servers on disk. Registering tells a host they exist.
Copilot CLI and VS Code do the second step themselves by reading plugin.json
→ mcpServers. Scout does not. It keeps its own registry at
~/.scout/m-mcp-servers.json and ignores the plugin manifest, so on Scout every
skill loads while every server it calls is missing. That reads as a broken
package rather than an unregistered one, which is why this step is explicit.
node <this-skill>/scripts/register-scout-mcp.mjsPreviews by default: it prints the plugin root it resolved, the registry path,
and one line per server. --apply writes, backing the existing registry up to a
timestamped .bak-alex-act-one-* file first.
| Outcome | Meaning |
add | Not registered yet; will be written |
unchanged | Already registered with exactly this config |
conflict | Registered with a different config. Left alone unless --force |
skip | Scout ships a built-in under that name, or a required env var is unset |
Two translation details this script exists to handle, both silent failures if done by hand:
- Scout wraps the launch spec in
configand expectstype: "command". The manifest's flattype: "stdio"is not the same shape. - Scout resolves nothing relative to the plugin. Manifest args carry package-relative script paths and must be made absolute.
Scout must be fully restarted afterwards — not just given a new
conversation. It handshakes servers at startup and populates each tools array
from that handshake; an empty array is the correct on-disk state before the
first launch.
The registration points at whichever plugin copy the script was run from. Run it from the installed package, not a working checkout, unless the intent is to test uncommitted changes.
Why alex-playwright and not playwright
Scout ships a built-in browser server already named playwright, so the package
registers its own under alex-playwright. This is not cosmetic. Scout's
built-in blocks the file: protocol, which is the case render-verify
centres on — inspecting an HTML, SVG, or PNG artifact just written to disk. The
package's server carries --allow-unrestricted-file-access and can open it. The
distinct name lets both coexist: the host's for ordinary web pages, this one for
local artifacts.
Checking For MCP Updates
Run provision-runtime.mjs --check-updates. It compares each exact pin against
dist-tags.latest and changes nothing. If a stable update exists, stop: run
compatibility checks, update the source pins and guidance together, and release
them. Private runtime state must never run ahead of reviewed source.
Failure Handling
| Signal | Action |
| A skill reports a missing tool | Run the dependency check; it names the install command for the current platform |
| A plugin shows as missing but the user installed it | Check the store line in the report. Apps read different stores; the plugin may be installed for a different one |
| Registry is unexpected | Stop. Correct npm configuration outside this skill, then preview again |
| Provisioning fails | Report npm's error; stop rather than changing registries, broadening prefix routing, or retrying automatically |
| Runtime reports missing private state | Run the provisioner again; do not substitute npx |
| Runtime reports a version mismatch | Re-provision from the reviewed source version; never launch stale state |
| Skills load on Scout but their MCP tools are absent | Provisioning and registration are separate. Run register-scout-mcp.mjs, then restart Scout fully |
| Scout still shows no new tools after registering | Confirm the restart was a full quit, not a new conversation. Then check the registry entry uses type: "command" inside config, with absolute arg paths |
--check-updates reports a stable update | Compatibility review before changing the pin |
Anti-Patterns
| Anti-pattern | Correction |
| Install a system package without asking | Print the command; let the user run it |
| Tell a user the plugin is broken because one tool is missing | Name the affected skills only. The rest still work |
| Present optional plugins as requirements | Nothing outside Node is required. A missing add-on blocks nothing |
| Report a missing enhancement as a failure | Say what the output loses, not that the skill is broken |
| Install a plugin from here | Route to install-visual-companions or setup-enterprise, which own the consent gates and caveats |
| Detect a corporate network and inject a registry | npm configuration is the authority, not network location |
Run npm install -g for MCP servers | Global binaries collide; these stay plugin-private |
| Apply before showing the registry and package set | Preview first, then obtain explicit consent |
| Assume provisioning made the servers usable everywhere | CLI and VS Code read the manifest; Scout needs explicit registration |
| Overwrite Scout's registry wholesale | Merge additively and back up first — it holds the user's other servers |
| Register a server whose credential is unset | Skip it and say so. An opaque auth failure is worse than a clear omission |
| Auto-install a newer stable version found by the audit | Compatibility first, then source update and release |
Would Revise If
Revise if a supported host cannot launch the private runtime directly, if a direct launch starts npm or npx, or if the dependency report and the error messages skills emit ever disagree.
Compatibility command constraints: setup-dependencies
Default to read-only dependency reporting. Explain the missing capability and obtain consent before installing reviewed dependencies.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

