Share Access
Share manages recipients and public visibility. It is not Git push: is-push sends committed state to an existing remote, while this skill changes who may use that remote Space.
This is a conversational layer over the IdeaSpaces CLI. The extension exposes the resolved CLI as
$IS_CLI_PATH when available. Define this helper in any bash command that invokes it:
is_cli() {
if [ -n "$IS_CLI_PATH" ] && [ -f "$IS_CLI_PATH" ]; then
case "$IS_CLI_PATH" in
*.js) node "$IS_CLI_PATH" "$@" ;;
*) "$IS_CLI_PATH" "$@" ;;
esac
else
ideaspaces "$@"
fi
}
No separate install is required. This release deliberately keeps Share CLI-backed; there is no
native is_share tool to discover or emulate with raw platform calls.
Product choices
Use only these user-facing choices:
- Explore — view the shared Content. No independent copy or Git access.
- Fork — Explore plus an independent current-version copy. It does not expose source history.
- Collaborate — Explore plus clone/fetch/push on the same Space, including source history. Bytes already fetched cannot be revoked later.
- Public — anyone may View and materialize a local Fork without an account. Publishing that independent Space still requires sign-in. Source history, clone, and push remain private.
- Private — disable public view and public Fork/Copy without changing named people or team access.
Hosted history for a person is an optional, separately revocable trail; do not describe it as clone or Collaborate.
Choose the target
The current published folder is the default. If the user names another repository, pass its canonical
URL with --repo <url>. Never ask for internal user, organization, Grant, userset, or repository
identifiers.
Before a mutation, state the exact target, recipient or visibility, level, and history implication. Ask for confirmation when any of those were inferred or omitted. A current request that already names the complete operation counts as confirmation; do not ask twice. Listing is read-only and needs no confirmation.
Commands
Quote every user-provided recipient, hostname, and URL when invoking Bash.
# Person: email or @handle
is_cli share person "someone@example.com" --grade explore
is_cli share person "@someone" --grade fork
is_cli share person "someone@example.com" --grade collaborate --history
# Registered team hostname
is_cli share team "acme.com" --grade collaborate
# Combined people, invitations, and teams
is_cli share list
# Pending invitation recovery
is_cli share resend "someone@example.com"
# Independent hosted-history control for a direct person share
is_cli share history "@someone" on
is_cli share history "@someone" off
# Aggregate removal by recipient
is_cli share remove "someone@example.com"
is_cli share remove "team:acme.com"
# Public/private choice
# Going public is plan-first: without --yes the CLI states what opens up and
# applies nothing — show that to the user, and add --yes only on their
# agreement. Going private applies directly.
is_cli share visibility public # plan only
is_cli share visibility public --yes # apply, after the user's yes
is_cli share visibility private
Non-interactive sessions never add --yes to visibility public on their own — with nobody
to agree, the plan is the honest result.
Append --repo "<url>" when targeting a repository other than the current folder. Use the normal human
output rather than --json: report recipients, levels, direct standing, and surviving effective
access, but do not surface backend coordinates.
If authentication is required, offer is_auth action="login", then retry the same command. Never
invoke retired repository-shaped membership or invitation subcommands; the CLI rejects them locally
with migration guidance.
Report the result
- Say who or which team changed, at which level, and whether hosted history was included.
- For resend, report delivery failure or the remaining cooldown without inventing a successful send.
- For history, repeat that Content, Copy, and Git transport are unchanged.
- After removal, preserve the CLI's distinction between removed direct access and access surviving through another person, team, owner, or policy path.
- After visibility changes, repeat that named grants are unchanged. For Public, distinguish the
account-free local
ideaspaces fork <space-url> [dir]path from authenticated later publication. - If the CLI refuses because the folder is unpublished or unmapped, offer is-publish or ask for a canonical Space URL. Surface other refusals without translating them into guessed authority.