← Back to Skills Marketplace
nsimonfr

Ghostfolio

by nSimon (Nicolas) · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
284
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install ghostfolio
Description
Manage and query Ghostfolio portfolio data (performance, holdings, dividends) using API endpoints and token auth patterns.
README (SKILL.md)

Ghostfolio

Use this skill when the user asks about Ghostfolio portfolio metrics, holdings, dividends, or API troubleshooting.

Environment Variables

# Prefer local access when available
export GHOSTFOLIO_BASE_URL="http://127.0.0.1:3333"
# Optional remote example:
# export GHOSTFOLIO_BASE_URL="https://rpi5.gate-mintaka.ts.net:8444"

# Long-lived token supplied by user/admin
export GHOSTFOLIO_TOKEN="..."

# Optional but recommended
export GHOSTFOLIO_TIMEZONE="Europe/Paris"

Auth Modes

Ghostfolio setups can differ. Support both modes:

Mode A — Direct bearer (works in some environments)

AUTH_HEADER="Authorization: Bearer $GHOSTFOLIO_TOKEN"

Mode B — Anonymous exchange (required in some environments)

AUTH_TOKEN=$(curl -fsS "$GHOSTFOLIO_BASE_URL/api/v1/auth/anonymous" \
  -H 'Content-Type: application/json' \
  --data "{\"accessToken\":\"$GHOSTFOLIO_TOKEN\"}" \
| jq -r '.authToken')

[ -n "$AUTH_TOKEN" ] && [ "$AUTH_TOKEN" != "null" ] || {
  echo "Failed to obtain authToken" >&2
  exit 1
}

AUTH_HEADER="Authorization: Bearer $AUTH_TOKEN"

Endpoint Templates

Portfolio performance

curl -fsS "$GHOSTFOLIO_BASE_URL/api/v2/portfolio/performance?range=ytd" \
  -H "$AUTH_HEADER" \
  -H 'Accept: application/json' \
  -H "x-ghostfolio-timezone: $GHOSTFOLIO_TIMEZONE" \
| jq .

Holdings

curl -fsS "$GHOSTFOLIO_BASE_URL/api/v1/portfolio/holdings?range=ytd" \
  -H "$AUTH_HEADER" \
  -H 'Accept: application/json' \
  -H "x-ghostfolio-timezone: $GHOSTFOLIO_TIMEZONE" \
| jq .

Dividends

curl -fsS "$GHOSTFOLIO_BASE_URL/api/v1/portfolio/dividends?groupBy=month&range=ytd" \
  -H "$AUTH_HEADER" \
  -H 'Accept: application/json' \
  -H "x-ghostfolio-timezone: $GHOSTFOLIO_TIMEZONE" \
| jq .

Quick connectivity + auth probe

# 1) Try direct bearer first
for ep in \
  '/api/v2/portfolio/performance?range=ytd' \
  '/api/v1/portfolio/holdings?range=ytd' \
  '/api/v1/portfolio/dividends?groupBy=month&range=ytd'
do
  code=$(curl -s -o /tmp/gf_probe.json -w '%{http_code}' "$GHOSTFOLIO_BASE_URL$ep" \
    -H "Authorization: Bearer $GHOSTFOLIO_TOKEN" \
    -H 'Accept: application/json' \
    -H "x-ghostfolio-timezone: $GHOSTFOLIO_TIMEZONE")
  echo "direct $ep -> $code"
done

# 2) If direct is 401/403, try anonymous exchange
AUTH_TOKEN=$(curl -fsS "$GHOSTFOLIO_BASE_URL/api/v1/auth/anonymous" \
  -H 'Content-Type: application/json' \
  --data "{\"accessToken\":\"$GHOSTFOLIO_TOKEN\"}" | jq -r '.authToken')

echo "anonymous exchange token present: $([ -n "$AUTH_TOKEN" ] && [ "$AUTH_TOKEN" != "null" ] && echo yes || echo no)"

Troubleshooting

  • 401 Unauthorized

    • Token invalid for this auth mode, token expired, or wrong token type.
    • Try the other auth mode (direct vs anonymous exchange).
  • 403 Forbidden

    • Token recognized but not authorized for the requested resources.
    • Verify account/environment and permissions.
  • Timezone inconsistencies

    • Send x-ghostfolio-timezone (or at least Timezone) explicitly.
  • Connectivity issues

    • Prefer local URL (http://127.0.0.1:3333) if service runs locally.
    • For remote TLS diagnostics only, temporary curl -k can help.

Safety Notes

  • Never print or commit real tokens in logs/docs.
  • Keep tokens in environment variables only.
  • Use curl -fsS so HTTP/API errors are not silently ignored.
Usage Guidance
This skill appears to do what it claims (talk to Ghostfolio APIs with a token) but the runtime instructions reference additional environment variables (GHOSTFOLIO_BASE_URL, GHOSTFOLIO_TIMEZONE) and require CLI tools (curl, jq) that are not listed in the registry metadata. Before installing: 1) Confirm you trust the target Ghostfolio host (especially if you set a remote GHOSTFOLIO_BASE_URL); 2) Ensure curl and jq are available on the agent runtime, or the canned commands will fail; 3) Be aware the skill will make network calls and write /tmp/gf_probe.json during probes; 4) Only provide the GHOSTFOLIO_TOKEN to trusted code/hosts and avoid pasting it into logs; 5) Ask the publisher to update the metadata to declare the additional environment variables and required binaries (or remove undeclared dependencies) for clearer, safer use.
Capability Analysis
Type: OpenClaw Skill Name: ghostfolio Version: 1.0.0 The Ghostfolio skill bundle provides standard templates and instructions for querying portfolio data via the Ghostfolio API. It correctly handles authentication using environment variables and includes logic for both direct bearer tokens and anonymous token exchange as per Ghostfolio's API design. No evidence of data exfiltration, malicious execution, or prompt injection was found; the code is transparent and aligns with its stated purpose (SKILL.md).
Capability Assessment
Purpose & Capability
Name/description (Ghostfolio API access) align with the requested primary credential GHOSTFOLIO_TOKEN. However, the SKILL.md also expects GHOSTFOLIO_BASE_URL and GHOSTFOLIO_TIMEZONE (but only GHOSTFOLIO_TOKEN is declared as required), which is a mismatch between declared requirements and what the instructions actually use.
Instruction Scope
The instructions instruct the agent to run network calls (curl) against a local or remote base URL, perform an anonymous token exchange, write to /tmp/gf_probe.json, and parse results with jq. They also suggest using curl -k for TLS diagnostics. The SKILL.md references environment variables not listed in requires.env and relies on external CLI tools (jq) that are not declared as required — this gives the skill broader runtime effects than the registry metadata describes.
Install Mechanism
This is an instruction-only skill with no install spec, so it won't write code to disk or fetch third-party packages. That is low install risk. However, the instructions do implicitly require runtime tools (curl and jq) that are not installed by the skill.
Credentials
Only one credential (GHOSTFOLIO_TOKEN) is declared as required which is proportionate for an API integration. The SKILL.md also expects optional GHOSTFOLIO_BASE_URL and GHOSTFOLIO_TIMEZONE but these are not listed in the registry metadata — this is a documentation inconsistency rather than an extra credential demand.
Persistence & Privilege
The skill does not request permanent 'always' inclusion or elevated privileges. It does perform network calls and creates a temporary file in /tmp during probes, but it does not modify other skills or system-wide agent configuration.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ghostfolio
  3. After installation, invoke the skill by name or use /ghostfolio
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of Ghostfolio skill. - Enables querying Ghostfolio portfolio data: performance, holdings, and dividends via API. - Supports both direct bearer and anonymous token exchange authentication modes. - Provides example `curl` commands and troubleshooting guidance. - Relies on `GHOSTFOLIO_TOKEN` environment variable for authentication. - Supports custom timezone via `GHOSTFOLIO_TIMEZONE`. - Includes connectivity probing scripts and common error diagnostics.
Metadata
Slug ghostfolio
Version 1.0.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Ghostfolio?

Manage and query Ghostfolio portfolio data (performance, holdings, dividends) using API endpoints and token auth patterns. It is an AI Agent Skill for Claude Code / OpenClaw, with 284 downloads so far.

How do I install Ghostfolio?

Run "/install ghostfolio" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Ghostfolio free?

Yes, Ghostfolio is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Ghostfolio support?

Ghostfolio is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Ghostfolio?

It is built and maintained by nSimon (Nicolas) (@nsimonfr); the current version is v1.0.0.

💬 Comments