# Droploft Loft

> Lofts: types, switching, listing, member operations.

- Skill: `langgenius/droploft-loft` (Agent Skill)
- Install (CLI): `npx skillmds@latest add langgenius/droploft-loft`
- Raw SKILL.md: https://api.skillmd.com/api/skills/langgenius/droploft-loft/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: langgenius (https://skillmd.com/u/langgenius)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/langgenius/droploft-loft

---


# Droploft v2 CLI — Loft Skill

A **loft** is a folder-like container of drops inside a workspace. Every drop belongs to exactly one loft.

## Loft types

| Type | Visibility | Created by |
|---|---|---|
| `my` | Personal — only the owner | Auto-created on signup; one per user |
| `all_hands` | Every workspace member | Workspace owner / admin |
| `restricted` | Explicit member list | Workspace owner / admin |

## Layer 1 flows

```bash
droploft loft +list                                    # lofts you own
droploft loft +switch                                  # interactive (TTY)
droploft loft +switch --loft <id>                      # non-TTY / scripts
```

`loft +switch` calls `GET /v1/me/navigation` so it sees lofts in every workspace you belong to (not just personal). It also updates `profile.workspace_id` to match the chosen loft's workspace, so subsequent commands inherit both.

## Layer 2 resource verbs

```bash
droploft lofts list
droploft lofts get <loft-id>                           # detail incl. member_count, viewer_role
droploft lofts create --data '{"name":"Engineering","type":"all_hands","workspace_id":"<ws>"}'
droploft lofts documents <loft-id>                     # dashboard cards (with summary + tags)
```

## Patterns

### Move work into a fresh shared loft

```bash
WS=$(droploft config get workspace_id --format json | jq -r '.data.workspace_id')
droploft lofts create --data "{\"name\":\"Launch Q1\",\"type\":\"all_hands\",\"workspace_id\":\"$WS\"}" \
  --format json | jq -r '.data.id'
```

### Switch profile to a loft you found by name

```bash
LOFT=$(droploft lofts list --format json --jq '.[] | select(.name=="Launch Q1") | .id')
droploft loft +switch --loft "$LOFT"
```

## Errors

- `loft +switch` with no flag in non-TTY → `non_interactive` (exit 2). Pass `--loft <id>`.
- Creating an `all_hands` or `restricted` loft requires workspace owner/admin role; otherwise 403.

