Install
$ agentstack add skill-nicolasmelo1-logion-with-scripts ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
With-Scripts: Bundled Gmail CLI Example
This example shows how to ship a real working tool inside a Logion course bundle. The course owns its codebase — there is no pip install, no npm install, no transitive dependency tree. Everything the agent needs to call the Gmail API lives in this bundle and was reviewed once when the course was published.
This is the canonical pattern for replacing "tell the user to install my CLI from npm" with "the course bundles the CLI."
Structure
with-scripts/
├── SKILL.md # this file
├── course/
│ └── capabilities.yaml # file + terminal + web; gmail.googleapis.com; OAuth env
├── scripts/ # thin entrypoints the agent invokes
│ ├── search.sh # search messages
│ └── list-labels.sh # list user labels
└── src/
└── gmailcli/ # actual implementation
├── __init__.py
├── __main__.py # python -m gmailcli {search,labels}
├── api.py # Gmail REST client (stdlib urllib only)
└── auth.py # reads OAuth token from env
scripts/ holds short entrypoints — bash wrappers that set PYTHONPATH and invoke the Python module. src/ holds the real implementation. The separation is deliberate:
- The agent only invokes
scripts/search.sh "query". Simple, discoverable surface. - The bulk of the logic — API calls, error handling, JSON parsing — lives in
src/gmailcli/. Reviewable, testable, organized. - The bundle stays self-contained: stdlib only (
urllib.request,json), nopip installanywhere.
When to use this template
Copy this structure when your course:
- Ships a non-trivial amount of code (more than one short script).
- Wants
scripts/to remain a clean surface for the agent to discover commands. - Has real implementation worth organizing into modules.
If your course is a single 50-line script, the simpler with-references-and-scripts/ example is a better starting point.
How to use
1. Obtain a Gmail OAuth token
The course does not authenticate. The user obtains a token externally — via the Google OAuth playground, their own auth flow, or another tool — and exports it.
This is the trust-clean pattern: OAuth is the user's separate, informed consent decision, outside Logion's trust loop. The course only reads the token from GMAIL_OAUTH_TOKEN.
2. Export the token and invoke
export GMAIL_OAUTH_TOKEN="ya29...."
bash scripts/search.sh "from:alice subject:invoice"
bash scripts/list-labels.sh
Both print JSON to stdout. The agent should redirect output if persistence is needed.
Capability declarations
tools: [file, terminal, web]— reads its own bundle, runs Python, makes HTTPS calls.network.allow_domains: [gmail.googleapis.com]— exactly the one host the bundled code contacts.secrets.env: [GMAIL_OAUTH_TOKEN]— the only env var the bundle reads.- No
filesystem.write— output goes to stdout. - No
human_approval— the user already consented by exporting the token.
What an author should change when copying
name:in frontmatter (must match the directory name).description:(specific about what, when, why).- Replace
src/gmailcli/with your own package directory. - Update
scripts/*.shentrypoints to dispatch to your package. - Update
course/capabilities.yamlto declare only what your code actually does — drop the network domain if you don't need it, etc. - Keep the stdlib-only constraint. If you find yourself wanting
pip install, see the "Self-contained bundle rule" inexamples/courses/README.md.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: nicolasmelo1
- Source: nicolasmelo1/logion
- License: MIT
- Homepage: https://logion.sh
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.