From confluence-assistant-skills
Manage content properties (custom metadata) on Confluence pages and blog posts. ALWAYS use for custom metadata, key-value data, or application-specific fields.
npx claudepluginhub grandcamel/confluence-assistant-skills --plugin confluence-assistant-skillsThis skill uses the workspace's default tool permissions.
---
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
This skill manages custom metadata on pages. Use for:
| Use This Skill | Use Instead |
|---|---|
| Get/set custom metadata | - |
| Store structured data | - |
| Edit page content | confluence-page |
| Add labels/tags | confluence-label |
| Set permissions | confluence-permission |
| Operation | Risk | Notes |
|---|---|---|
| Get properties | - | Read-only |
| Set property | - | Can be overwritten |
| Delete property | ⚠️ | Data loss |
Manages content properties on Confluence pages and blog posts. Content properties are custom metadata stored as key-value pairs that can be attached to any content. They are useful for storing application-specific data, configuration, or custom fields.
Use Cases:
Retrieve content properties from a page or blog post.
Usage:
# Get all properties on content
confluence property get 12345
# Get specific property by key
confluence property get 12345 --key my-property
# Get with expanded version info
confluence property get 12345 --expand version
# Output as JSON
confluence property get 12345 --output json
Options:
content_id - Content ID (required)--key, -k - Specific property key to retrieve--expand - Comma-separated fields to expand (e.g., version)--output, -o - Output format: text or jsonCreate or update a content property.
Usage:
# Set simple string value
confluence property set 12345 my-property --value "text value"
# Set from JSON file
confluence property set 12345 config --file config.json
# Set complex JSON value
confluence property set 12345 data --value '{"enabled": true, "count": 42}'
# Update existing property (auto-increments version)
confluence property set 12345 my-property --value "updated" --update
Options:
content_id - Content ID (required)key - Property key (required)--value, -v - Property value (string or JSON)--file, -f - Read value from JSON file--update - Update existing property (fetches current version)--version - Explicit version number for update--output, -o - Output format: text or jsonValue Types: Properties can store:
"text"42true/false{"key": "value", "array": [1, 2, 3]}Delete a content property.
Usage:
# Delete property (with confirmation prompt)
confluence property delete 12345 my-property
# Force delete without confirmation
confluence property delete 12345 my-property --force
Options:
content_id - Content ID (required)key - Property key to delete (required)--force - Delete without confirmationList and filter content properties.
Usage:
# List all properties
confluence property list 12345
# Filter by key prefix
confluence property list 12345 --prefix app.
# Filter by regex pattern
confluence property list 12345 --pattern "config.*"
# Sort by version
confluence property list 12345 --sort version
# Show detailed version info
confluence property list 12345 --expand version --verbose
# JSON output
confluence property list 12345 --output json
Options:
content_id - Content ID (required)--prefix - Filter by key prefix--pattern - Filter by regex pattern--sort - Sort by: key or version (default: key)--expand - Comma-separated fields to expand--verbose, -v - Show detailed information--output, -o - Output format: text or jsonNote: This command retrieves up to 100 properties maximum.
Uses Confluence REST API v1 endpoints:
GET /rest/api/content/{id}/propertyGET /rest/api/content/{id}/property/{key}POST /rest/api/content/{id}/propertyPUT /rest/api/content/{id}/property/{key}DELETE /rest/api/content/{id}/property/{key}# Set review status
confluence property set 98765 review-status --value '{"status": "approved", "date": "2024-01-15", "reviewer": "john@example.com"}'
# Get review status
confluence property get 98765 --key review-status
# Update review status
confluence property set 98765 review-status --value '{"status": "published", "date": "2024-01-20"}' --update
# Store config from file
confluence property set 12345 app-config --file config.json
# List all config properties
confluence property list 12345 --prefix app-
# Get specific config
confluence property get 12345 --key app-config
# Initialize workflow state
confluence property set 12345 workflow --value '{"stage": "draft", "assignee": "alice@example.com"}'
# Update to next stage
confluence property set 12345 workflow --value '{"stage": "review", "assignee": "bob@example.com"}' --update
# List all workflow properties
confluence property list 12345 --pattern "workflow.*" --verbose
# List all properties
confluence property list 12345
# Delete specific property
confluence property delete 12345 old-property --force
# Delete with confirmation
confluence property delete 12345 temp-data
Properties support versioning for conflict detection:
Auto-version update:
confluence property set 12345 my-prop --value "new value" --update
This automatically fetches the current version and increments it.
Use prefixes to organize properties:
app.config.* - Application configurationworkflow.* - Workflow statereview.* - Review metadataintegration.* - External integration data{
"created": "2024-01-15T10:30:00Z",
"modified": "2024-01-20T14:45:00Z",
"reviewed": "2024-01-18T16:20:00Z"
}
{
"stage": "review",
"stages": ["draft", "review", "approved", "published"],
"current_assignee": "reviewer@example.com",
"history": [
{"stage": "draft", "user": "author@example.com", "date": "2024-01-15"},
{"stage": "review", "user": "reviewer@example.com", "date": "2024-01-20"}
]
}
{
"tags": ["important", "needs-update", "customer-facing"],
"approvers": [
{"name": "Alice", "email": "alice@example.com", "approved": true},
{"name": "Bob", "email": "bob@example.com", "approved": false}
],
"metrics": {
"views": 1234,
"likes": 56,
"shares": 12
}
}
All commands handle common errors:
Use --output json for programmatic error handling.
# Get property value in scripts
VALUE=$(confluence property get 12345 --key status --output json | jq -r '.value.status')
# Conditional updates
if [ "$VALUE" == "draft" ]; then
confluence property set 12345 status --value '{"status": "review"}' --update
fi
# Update properties on multiple pages
for PAGE_ID in 111 222 333; do
confluence property set $PAGE_ID deploy-status --value '{"deployed": true}' --update
done
Properties are indexed and searchable via CQL:
# Find pages with specific property
confluence search cql "content.property[my-property].value = 'test'"