jira-spaces

Pass

Manage Confluence spaces for project documentation. Create, list, and delete spaces with templates. Use when setting up project documentation structure or managing Confluence content areas.

@01000001-01001110
MIT2/22/2026
(0)
3stars
0downloads
0views

Install Skill

Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.

Install globally (user-level):

npx skillhub install 01000001-01001110/agent-jira-skills/jira-spaces

Install in current project:

npx skillhub install 01000001-01001110/agent-jira-skills/jira-spaces --project

Suggested path: ~/.claude/skills/jira-spaces/

SKILL.md Content

---
name: jira-spaces
description: Manage Confluence spaces for project documentation. Create, list, and delete spaces with templates. Use when setting up project documentation structure or managing Confluence content areas.
---

# Jira Spaces Skill

Manage Confluence spaces through the Confluence Cloud REST API. Spaces are the top-level containers for organizing project documentation, wikis, and knowledge bases.

## When to Use

- Setting up documentation structure for a new project
- Creating spaces for different teams or initiatives
- Listing available spaces to find documentation
- Archiving or deleting obsolete spaces

## Prerequisites

- Confluence Cloud instance (same Atlassian account as Jira)
- API token with Confluence access
- Environment variables configured in `.env`

## API Reference

### Base URL

Confluence Cloud uses the same base URL as Jira Cloud but different API path:

```
https://your-domain.atlassian.net/wiki/rest/api
```

### Authentication

Same as Jira - Basic Auth with email:token.

### Key Endpoints

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/space` | GET | List all spaces |
| `/space` | POST | Create a new space |
| `/space/{spaceKey}` | GET | Get space details |
| `/space/{spaceKey}` | DELETE | Delete a space |
| `/space/{spaceKey}/content` | GET | List space content |

## Space Types

| Type | Description | Use Case |
|------|-------------|----------|
| `global` | Site-wide space | Company wikis, shared docs |
| `personal` | User's personal space | Individual notes, drafts |

## Creating a Space

### Request

```typescript
const response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space`, {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    key: 'PROJ',           // Unique space key (uppercase)
    name: 'Project Docs',   // Display name
    type: 'global',         // 'global' or 'personal'
    description: {
      plain: {
        value: 'Documentation for the project',
        representation: 'plain'
      }
    }
  })
});
```

### Response

```json
{
  "id": 12345,
  "key": "PROJ",
  "name": "Project Docs",
  "type": "global",
  "status": "current",
  "_links": {
    "webui": "/spaces/PROJ",
    "self": "https://your-domain.atlassian.net/wiki/rest/api/space/PROJ"
  }
}
```

## Listing Spaces

### Request

```typescript
const response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space?limit=25&type=global`, {
  headers: {
    'Authorization': `Basic ${auth}`,
    'Accept': 'application/json'
  }
});
```

### Response

```json
{
  "results": [
    {
      "id": 12345,
      "key": "PROJ",
      "name": "Project Docs",
      "type": "global",
      "status": "current"
    }
  ],
  "start": 0,
  "limit": 25,
  "size": 1,
  "_links": {}
}
```

## Deleting a Space

**WARNING**: Deleting a space removes all pages and content permanently!

### Request

```typescript
const response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space/PROJ`, {
  method: 'DELETE',
  headers: {
    'Authorization': `Basic ${auth}`
  }
});
```

Returns 202 Accepted (deletion is async) or 204 No Content.

## Space Keys

Space keys must:
- Be unique across the Confluence instance
- Use only uppercase letters and numbers
- Be 1-255 characters
- Not start with a number

Conventions:
- `PROJ` - Project-specific
- `TEAM` - Team-specific
- `DOC` - Documentation
- `KB` - Knowledge base

## Common Patterns

### Create Project Documentation Space

```typescript
// Create space with home page
await createSpace({
  key: 'TUSTLE',
  name: 'Tustle Project Documentation',
  description: 'Technical documentation and guides for Tustle MVP'
});

// Add standard pages
await createPage('TUSTLE', 'Getting Started', 'Overview and setup instructions...');
await createPage('TUSTLE', 'Architecture', 'System architecture documentation...');
await createPage('TUSTLE', 'API Reference', 'API endpoint documentation...');
```

### List Team Spaces

```typescript
const spaces = await listSpaces({ type: 'global', limit: 50 });
const teamSpaces = spaces.filter(s => s.name.includes('Team'));
```

## Error Handling

| Status | Meaning | Resolution |
|--------|---------|------------|
| 400 | Invalid space key | Check key format (uppercase, no special chars) |
| 401 | Unauthorized | Check API token and email |
| 403 | Forbidden | User lacks space admin permissions |
| 404 | Space not found | Verify space key exists |
| 409 | Conflict | Space key already exists |

## Scripts

| Script | Description |
|--------|-------------|
| `create-space` | Create a new Confluence space |
| `delete-space` | Delete a space (with confirmation) |
| `list-spaces` | List all accessible spaces |

## Usage Examples

```bash
# List all spaces
node run.js list-spaces

# Create a new space
node run.js create-space DOCS "Documentation Space"

# Delete a space (interactive confirmation)
node run.js delete-space DOCS

# Force delete without confirmation
node run.js delete-space DOCS --confirm
```

## Related Skills

- `jira-projects` - Jira project management
- `jira-issues` - Issue creation for documentation tasks