Skip to content
Back to skills

Sharing

ASecurity

Prime on Eidet's layers and packs before changing them — MemoryLayer types and the Local/Shared/Base priority ladder, LayerService mounting and applicability, the immutable LayerScope handed to recall, MarkdownPackFormat's YAML+markdown round-trip and its import provenance clamp, LayerSyncService and ILayerSource, and the AGENTS.md export. Use when the task touches pack export/import, mounting or unmounting a layer, cross-repo scope, the .eidet markdown format, or ExportService. Not for seedi...

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
ai-agentsrustgo

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add stevehansen/eidet --skill sharing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sharing?

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

Security grade badge for Sharing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/stevehansen-sharing/badge)](https://www.skillsdirectory.com/skills/stevehansen-sharing)

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
---
name: sharing
description: Prime on Eidet's layers and packs before changing them — MemoryLayer types and the Local/Shared/Base priority ladder, LayerService mounting and applicability, the immutable LayerScope handed to recall, MarkdownPackFormat's YAML+markdown round-trip and its import provenance clamp, LayerSyncService and ILayerSource, and the AGENTS.md export. Use when the task touches pack export/import, mounting or unmounting a layer, cross-repo scope, the .eidet markdown format, or ExportService. Not for seeding from a repo's own files (see intake), not for backup/restore or remote sync.
---

# Sharing (layers & packs) — priming

**Canonical spec:** `docs/domains/sharing.md` — read it for the layer model, the pack format, all
invariants, key files, and gotchas. Terms of record: `UBIQUITOUS_LANGUAGE.md` § Namespacing & layers,
Sharing. Threat: `STRIDE.md` T-7.

Layers stack namespaces (Local rw on top; Shared/Base ro below) and resolve into the recall scope.
Packs are the human-readable transport that auto-mounts as a layer on import.

## Core invariants (get these right)

- **Writes always land in the Local layer** — Shared/Base contribute to recall but never accept writes.
- **Clamp declared provenance on import.** A poisoned pack can write `provenance=userStated`; anything
  above the `Pack` trust floor is clamped back down (T-7). Lower-or-equal origins pass through.
- **`Unknown` provenance never crosses the wire** — omit it on export so a foreign install applies its
  own default and the clamp holds it at the pack floor.
- **`LayerScope` is resolved once at the boundary** and is immutable; the read pipeline never learns
  about mounting.
- **Applicability has three routes**: universal (empty `ApplicableRepos`), explicit repo, or
  package-dependency match (the auto-mount path).
- **The pack format is a published contract** (ScribeGate + plain markdown viewers): every field must
  round-trip and defaults are omitted. A new `MemoryEntry` field needs a wire decision.
- **Mounting is idempotent**, and a legacy `bundle:` layer id is reused rather than forked.
- **Loose Ends and Memory files are never exported.**

## Key files / reuse

- `src/Eidet.Core/Services/LayerService.cs` — mount/applicability/scope.
- `src/Eidet.Core/Layers/LayerScope.cs` — the scope snapshot + `NonLocalDeBoost`.
- `src/Eidet.Core/Services/MarkdownPackFormat.cs` — the format *and* the import clamp.
- `src/Eidet.Core/Layers/ILayerSource.cs` — add a transport here (`file` is the only scheme today).

## Gotchas

- `GetMountedLayersAsync("")` is an intentional "all layers" wildcard, not a bug.
- Cross-repo recall is off by default — a layer that "isn't working" is usually a `CrossRepo: false` call.
- `AutoMountByDependenciesAsync` mutates the *layer* (appending repo ids), not the repo.
- Pack import mints ids under the *pack* id, not the importing repo — imports are a separate namespace.
- The de-boost is a multiplier, not a filter.
- `AGENTS.md` export is a one-way rendering; regenerate rather than hand-edit.

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.