freedcamp-agent-skill

Productivity & Tasks
v1.0.0
Benign

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

21.1K downloads1.1K installsby @agrublev

Setup & Installation

Install command

clawhub install agrublev/freedcamp-agent-skill

If the CLI is not installed:

Install command

npx clawhub@latest install agrublev/freedcamp-agent-skill

Or install with OpenClaw CLI:

Install command

openclaw skills install agrublev/freedcamp-agent-skill

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/agrublev/freedcamp-agent-skill

What This Skill Does

A dependency-free Node.js CLI for the Freedcamp REST API v1, authenticated with HMAC-SHA1 credentials. Agents can list, create, and update tasks, manage task lists, post comments, and read or dismiss notifications. All output is JSON.

Handles HMAC-SHA1 signing, session caching, and auto-pagination automatically, so agents can query Freedcamp without implementing the auth flow manually.

When to Use It

  • Creating a task in a specific Freedcamp project from a chat prompt
  • Fetching all in-progress tasks assigned to a team member
  • Posting a comment on a task after completing a review
  • Checking recent notifications and marking them as read
  • Listing all projects and groups to resolve a project ID
View original SKILL.md file
# 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)

```bash
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:**

```bash
openclaw config get skills.entries.freedcamp
```

**Remove stored credentials:**

```bash
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

| 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

- 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.

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Creating a task in a specific Freedcamp project from a chat prompt

AGENT
  1. 1Creating a task in a specific Freedcamp project from a chat prompt
  2. 2Fetching all in-progress tasks assigned to a team member
  3. 3Posting a comment on a task after completing a review
  4. 4Checking recent notifications and marking them as read
  5. 5Listing all projects and groups to resolve a project ID
OUTPUT
Manage Freedcamp tasks, projects, groups, comments, notifications, and task lists via HMAC-SHA1 API credentials.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 25, 2026