Freedcamp Project Management
by @agrublev
Manage Freedcamp tasks, projects, groups, comments, notifications, and task lists via HMAC-SHA1 API credentials.
clawhub install freedcamp-agent-skillπ About This Skill
name: freedcamp description: "Manage Freedcamp tasks, projects, groups, comments, notifications, and task lists via HMAC-SHA1 API credentials." homepage: https://freedcamp.com user-invocable: true metadata: {"openclaw":{"requires":{"env":["FREEDCAMP_API_KEY","FREEDCAMP_API_SECRET"]},"primaryEnv":"FREEDCAMP_API_KEY","homepage":"https://freedcamp.com"}}
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).
{baseDir}/scripts/freedcamp.mjsFREEDCAMP_API_KEY + FREEDCAMP_API_SECRETSetup
1. Obtain your Freedcamp API key and secret from your Freedcamp account settings. 2. Provide both values as environment variables.
Common injection patterns
export FREEDCAMP_API_KEY="..."
export FREEDCAMP_API_SECRET="..."
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)
node {baseDir}/scripts/freedcamp.mjs me
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 namesproject_name from the output for other commandsAvoid guessing a project ID when multiple matches exist.
Core: tasks
List tasks in a project
node {baseDir}/scripts/freedcamp.mjs tasks --project
List tasks with filters
node {baseDir}/scripts/freedcamp.mjs tasks --project
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 (max 200 per page, default 200)--offset for paginationGet a single task (with comments and files)
node {baseDir}/scripts/freedcamp.mjs task
Create a task
node {baseDir}/scripts/freedcamp.mjs create-task --project
With optional description and task list:
node {baseDir}/scripts/freedcamp.mjs create-task --project
Update a task
node {baseDir}/scripts/freedcamp.mjs update-task
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)
node {baseDir}/scripts/freedcamp.mjs task-lists --project
node {baseDir}/scripts/freedcamp.mjs task-lists --project
Comments
node {baseDir}/scripts/freedcamp.mjs comment
Comments are automatically wrapped in tags. You can also pass raw HTML:
Bold textnode {baseDir}/scripts/freedcamp.mjs comment
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
node {baseDir}/scripts/freedcamp.mjs notifications
node {baseDir}/scripts/freedcamp.mjs mark-read
Data model reference
Task statuses
| Name | Value | CLI flag |
|---|---|---|
| Not Started | 0 | not_started |
| Completed | 1 | completed |
| In Progress | 2 | in_progress |
| Invalid | 3 | invalid |
| Review | 4 | review |
Priorities
| Name | Value | |---|---| | None | 0 | | Low | 1 | | Medium | 2 | | High | 3 |
App types
| ID | Name | Key | |---|---|---| | 2 | Tasks | TODOS | | 3 | Discussions | DISCUSSIONS | | 4 | Milestones | MILESTONES | | 5 | Time | TIME | | 6 | Files | FILES | | 13 | Issue Tracker | BUGTRACKER | | 14 | Wikis | WIKI | | 16 | CRM | CRM | | 17 | Passwords | PASSMAN | | 19 | Calendar | CALENDAR | | 47 | Planner | PLANNER | | 48 | Translations | TRANSLATIONS |
Important notes
--text is auto-wrapped in tags.--offset for more.--all flag on tasks auto-paginates to fetch every result.Out of scope
βοΈ Configuration
1. Obtain your Freedcamp API key and secret from your Freedcamp account settings. 2. Provide both values as environment variables.
Common injection patterns
export FREEDCAMP_API_KEY="..."
export FREEDCAMP_API_SECRET="..."
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