Freedcamp Project Management

Manage Freedcamp tasks, projects, groups, comments, notifications, and task lists via HMAC-SHA1 API credentials.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
2 · 1.2k · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the code and SKILL.md: the scripts implement a Freedcamp CLI using FREEDCAMP_API_KEY and FREEDCAMP_API_SECRET and call only the Freedcamp API (https://freedcamp.com/api/v1). No unrelated services, binaries, or credentials are requested.
Instruction Scope
SKILL.md instructs only Freedcamp-related workflows (session discovery, tasks, comments, notifications) and how to provide credentials. The runtime instructions and example commands match the implementation. The docs recommend storing credentials in OpenClaw config and show how to set/unset them.
Install Mechanism
No install spec; this is effectively instruction-only plus included Node.js scripts. That minimizes install-time risk. The code is dependency-free and uses only Node standard libs. No external downloads or archive extraction are present.
Credentials
The only required environment variables are FREEDCAMP_API_KEY and FREEDCAMP_API_SECRET (primary credential declared as FREEDCAMP_API_KEY), which are exactly what a Freedcamp API client needs. No unrelated SECRET/TOKEN variables or extra credentials are requested. The scripts read these env vars and nothing else sensitive.
Persistence & Privilege
The skill caches session data to a file in the user's home (~/.openclaw/skills/freedcamp-session.json by default). This is expected for session reuse but means session tokens are persisted on disk and should be protected. always is false and disable-model-invocation is false (agent-autonomy is normal); the skill does not change other skills or system settings.
Assessment
This skill appears to do what it says: a dependency-free Freedcamp CLI that needs your Freedcamp API key and secret. Before installing, consider: 1) Protect your API_KEY and API_SECRET—the skill reads them from environment variables and will use them to act on your Freedcamp account. 2) The tool caches session tokens to ~/.openclaw/skills/freedcamp-session.json (or a path you set via FREEDCAMP_SESSION_PATH); treat that file as sensitive and remove it if you stop using the skill. 3) The included demo script will load a .env file if present and spawn the CLI (so do not keep secrets in repo files you don't want read). 4) Review and run the scripts in a safe environment (or inspect the code) before granting credentials. If you need the skill to run only interactively, avoid putting credentials in long-lived OpenClaw config entries or world-readable files.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk97d2x6sd2mbkk63j8qthqw9bn80ztxr

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

EnvFREEDCAMP_API_KEY, FREEDCAMP_API_SECRET
Primary envFREEDCAMP_API_KEY

SKILL.md

Freedcamp

This skill provides a dependency-free Node.js CLI that calls the Freedcamp REST API (v1) using HMAC-SHA1 secured credentials (API Key + API Secret).

  • Script: {baseDir}/scripts/freedcamp.mjs
  • Auth: FREEDCAMP_API_KEY + FREEDCAMP_API_SECRET
  • Output: JSON only (stdout), suitable for agents and automation

Setup

  1. Obtain your Freedcamp API key and secret from your Freedcamp account settings.
  2. Provide both values as environment variables.

Common injection patterns

  • Shell env (local testing):

    export FREEDCAMP_API_KEY="..."
    export FREEDCAMP_API_SECRET="..."
    
  • OpenClaw config (recommended): set skills.entries.freedcamp.apiKey and skills.entries.freedcamp.env.FREEDCAMP_API_SECRET so secrets are injected only for the agent run.

Configure via OpenClaw CLI (recommended)

openclaw config set skills.entries.freedcamp.enabled true
openclaw config set skills.entries.freedcamp.apiKey "YOUR_API_KEY"
openclaw config set skills.entries.freedcamp.env.FREEDCAMP_API_SECRET "YOUR_API_SECRET"

Verify what is stored:

openclaw config get skills.entries.freedcamp

Remove stored credentials:

openclaw config unset skills.entries.freedcamp.apiKey
openclaw config unset skills.entries.freedcamp.env.FREEDCAMP_API_SECRET

First calls (sanity + discovery)

  • Who am I / session info:

    node {baseDir}/scripts/freedcamp.mjs me

  • List all groups, projects, and apps:

    node {baseDir}/scripts/freedcamp.mjs groups-projects

ID resolution

When the user provides project names, resolve to IDs using:

  • groups-projects returns all groups with their projects, including project IDs and names
  • Use the exact project_name from the output for other commands

Avoid guessing a project ID when multiple matches exist.

Core: tasks

List tasks in a project

node {baseDir}/scripts/freedcamp.mjs tasks --project <project_id> --all

List tasks with filters

node {baseDir}/scripts/freedcamp.mjs tasks --project <project_id> --status in_progress,not_started --assigned_to 2,-1

Useful filters:

  • --status comma-separated: not_started, completed, in_progress, invalid, review
  • --assigned_to comma-separated user IDs. 0 = unassigned, -1 = everyone
  • --due_from YYYY-MM-DD / --due_to YYYY-MM-DD
  • --created_from YYYY-MM-DD / --created_to YYYY-MM-DD
  • --list_status active|archived|all
  • --with_archived true to include tasks from archived projects
  • --limit <n> (max 200 per page, default 200)
  • --offset <n> for pagination

Get a single task (with comments and files)

node {baseDir}/scripts/freedcamp.mjs task <task_id>

Create a task

node {baseDir}/scripts/freedcamp.mjs create-task --project <project_id> --title "Task title"

With optional description and task list:

node {baseDir}/scripts/freedcamp.mjs create-task --project <project_id> --title "Task title" --description "Details here" --task_group <task_group_id>

Update a task

node {baseDir}/scripts/freedcamp.mjs update-task <task_id> --title "New title" --status in_progress

Status values: not_started (0), completed (1), in_progress (2), invalid (3), review (4)

Create a task by project name

node {baseDir}/scripts/freedcamp.mjs create-task-by-name --project_name "My Project" --app_name "Tasks" --title "New task"

Resolves the project name to an ID using session data. Currently supports the Tasks app.

Task lists (groups)

  • List task lists for a project:

    node {baseDir}/scripts/freedcamp.mjs task-lists --project <project_id>

  • Specify app (default is Tasks / app_id 2):

    node {baseDir}/scripts/freedcamp.mjs task-lists --project <project_id> --app_id 2

Comments

  • Add a comment to any item:

    node {baseDir}/scripts/freedcamp.mjs comment <item_id> --app_name "Tasks" --text "My comment"

Comments are automatically wrapped in <p> tags. You can also pass raw HTML:

node {baseDir}/scripts/freedcamp.mjs comment <item_id> --app_name "Tasks" --html "<p>Bold <b>text</b></p>"

App names for comments

When adding comments, the --app_name must be one of: Tasks, Discussions, Milestones, Time, Files, Issue Tracker, Wikis, CRM, Passwords, Calendar, Planner, Translations

Notifications

  • Fetch recent notifications (last 60 days):

    node {baseDir}/scripts/freedcamp.mjs notifications

  • Mark a notification as read:

    node {baseDir}/scripts/freedcamp.mjs mark-read <notification_uid>

Data model reference

Task statuses

NameValueCLI flag
Not Started0not_started
Completed1completed
In Progress2in_progress
Invalid3invalid
Review4review

Priorities

NameValue
None0
Low1
Medium2
High3

App types

IDNameKey
2TasksTODOS
3DiscussionsDISCUSSIONS
4MilestonesMILESTONES
5TimeTIME
6FilesFILES
13Issue TrackerBUGTRACKER
14WikisWIKI
16CRMCRM
17PasswordsPASSMAN
19CalendarCALENDAR
47PlannerPLANNER
48TranslationsTRANSLATIONS

Important notes

  • Comments must contain HTML. Plain text passed via --text is auto-wrapped in <p> tags.
  • Task pagination max is 200 per request; use --offset for more.
  • Session is cached locally and auto-refreshes on 401 errors.
  • The --all flag on tasks auto-paginates to fetch every result.

Out of scope

  • Invoices and Invoices Plus APIs are not exposed.
  • "Bot personality" is not embedded; configure behavior in your agent prompt.

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…