AI agent skill · by @NeverSight
Jira Spaces
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.
Archived 2026-10-23 · Source updated 2026-09-18. Check the original repository for the latest version.
SKILL.md instructions
# 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