Skip to content
Back to skills

017 Reference C3ce200c

ASecurity

> Reference for: Common Ground > Load when: Storage operations, project identification, file format ---

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 31, 2026
databasesbashgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 31, 2026

npx -y skills add tools-only/X-Skills --skill 017-reference_c3ce200c --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 017 Reference C3ce200c?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 017 Reference C3ce200c
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-017-reference-c3ce200c/badge)](https://www.skillsdirectory.com/skills/tools-only-017-reference-c3ce200c)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Ground File Management

> Reference for: Common Ground
> Load when: Storage operations, project identification, file format

---

## Directory Structure

Ground files are stored in the user's Claude home directory:

```
~/.claude/common-ground/
├── index.md                              # Global registry of all projects
└── {project-id}/
    ├── COMMON-GROUND.md                         # Human-readable assumptions
    ├── ground.index.json                 # Machine-readable index
    └── archive/
        └── {timestamp}-{reason}.md       # Archived versions (future)
```

---

## Project Identification

### Primary Method: Git Remote

```bash
git remote get-url origin 2>/dev/null
```

**Example outputs:**
- `https://github.com/user/repo.git` -> project_id: `github.com/user/repo`
- `git@github.com:user/repo.git` -> project_id: `github.com/user/repo`

**Normalization rules:**
1. Remove protocol prefix (`https://`, `git@`)
2. Remove `.git` suffix
3. Replace `:` with `/` for SSH URLs
4. Use as directory name (URL-safe characters)

### Fallback Method: Path-Based

If no git remote found:

```bash
pwd
```

**Example:**
- `/home/user/projects/my-app` -> project_id: `local/home-user-projects-my-app`

**Normalization rules:**
1. Prefix with `local/`
2. Replace `/` with `-`
3. Remove leading slash

---

## Global Index (index.md)

Located at: `~/.claude/common-ground/index.md`

### Template

```markdown
# Common Ground: Project Registry

Last Updated: {timestamp}

## Tracked Projects

| Project | ID | Assumptions | Last Check |
|---------|----|-----------:|------------|
| {name} | {project_id} | {count} | {date} |

---

*Auto-generated by /common-ground command*
```

### Update Rules

- Add new project when first ground file created
- Update counts and dates on each /common-ground run
- Remove projects when ground file deleted (future --reset)

---

## Ground File (COMMON-GROUND.md)

Located at: `~/.claude/common-ground/{project_id}/COMMON-GROUND.md`

### Template

```markdown
# Project Common Ground

**Project:** {project_name}
**Project ID:** {project_id}
**Created:** {created_timestamp}
**Last Updated:** {updated_timestamp}

---

## ESTABLISHED

High confidence assumptions. Treat as premises.

### {id}: {title}

- **Type:** {stated|inferred|assumed}
- **Assumption:** {description}
- **Source:** {evidence or citation}
- **Validated:** {date}
- **Context:** {when this applies}

---

## WORKING

Medium confidence. Use but flag if contradicted.

### {id}: {title}

- **Type:** {stated|inferred|assumed}
- **Assumption:** {description}
- **Source:** {evidence or citation}
- **Validated:** {date}
- **Context:** {when this applies}

---

## OPEN

Low confidence. Ask before assuming.

### {id}: {title}

- **Type:** {stated|inferred|assumed|uncertain}
- **Assumption:** {description}
- **Source:** {evidence or citation}
- **Validated:** {date}
- **Context:** {when this applies}

---

## History

| Date | Action | ID | Details |
|------|--------|------|---------|
| {date} | {Created/Promoted/Demoted/Archived} | {id} | {details} |

---

*Managed by /common-ground command*
```

### Assumption ID Format

Format: `A{number}` (e.g., A001, A002, A003)

- Sequential within project
- Never reused (even after archival)
- Track highest ID in index.json

---

## Machine Index (ground.index.json)

Located at: `~/.claude/common-ground/{project_id}/ground.index.json`

### Schema

```json
{
  "version": "1.0",
  "project_id": "{project_id}",
  "project_name": "{human_readable_name}",
  "created": "{ISO_timestamp}",
  "last_updated": "{ISO_timestamp}",
  "next_id": 4,
  "assumptions": [
    {
      "id": "A001",
      "title": "{short_title}",
      "type": "stated|inferred|assumed|uncertain",
      "tier": "ESTABLISHED|WORKING|OPEN",
      "assumption": "{full_description}",
      "source": "{evidence}",
      "validated": "{ISO_date}",
      "context": "{when_applies}",
      "created": "{ISO_timestamp}",
      "history": [
        {
          "date": "{ISO_timestamp}",
          "action": "created|promoted|demoted",
          "from_tier": null,
          "to_tier": "WORKING",
          "reason": "{optional}"
        }
      ]
    }
  ],
  "archived": []
}
```

### Field Definitions

| Field | Type | Description |
|-------|------|-------------|
| `version` | string | Schema version for migrations |
| `project_id` | string | Unique project identifier |
| `project_name` | string | Human-readable project name |
| `next_id` | number | Next assumption ID to assign |
| `assumptions` | array | Active assumptions |
| `archived` | array | Archived assumptions (future) |

---

## File Operations

### Create New Ground File

1. Check if `~/.claude/common-ground/` exists, create if not
2. Create `{project_id}/` directory
3. Write `COMMON-GROUND.md` from template
4. Write `ground.index.json` with empty assumptions
5. Update global `index.md`

### Update Existing Ground File

1. Read `ground.index.json`
2. Apply changes (add/promote/demote)
3. Update `last_updated` timestamp
4. Regenerate `COMMON-GROUND.md` from index.json
5. Update global `index.md` counts

### Read Ground File

1. Check if `{project_id}/ground.index.json` exists
2. If exists, parse JSON and return
3. If not exists, return null (trigger fresh start)

---

## Writing Best Practices

### Human-Readable (COMMON-GROUND.md)

- Use consistent markdown formatting
- Include horizontal rules between tiers
- Keep assumptions readable without JSON
- Include history table for audit trail

### Machine-Readable (ground.index.json)

- Always valid JSON
- Include all fields (no omissions)
- Use ISO 8601 timestamps
- Preserve history array for audit

### Sync Rules

- `ground.index.json` is source of truth
- `COMMON-GROUND.md` is generated from index.json
- Always update both on any change
- Never manually edit COMMON-GROUND.md (regenerate instead)

---

## Error Handling

| Scenario | Action |
|----------|--------|
| No home directory access | Warn user, suggest alternate path |
| Corrupted index.json | Backup and regenerate from COMMON-GROUND.md |
| Missing project directory | Create fresh on next run |
| Permission denied | Report error with path |

Files in this skill

  • README.md932 B
  • skill.md6.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.