cc-session-tools 3.1.0__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cc_session_tools-3.1.0/src/cc_session_tools.egg-info → cc_session_tools-3.2.0}/PKG-INFO +5 -1
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/README.md +4 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/pyproject.toml +1 -1
- cc_session_tools-3.2.0/src/cc_session_tools/skills/compact-smart/SKILL.md +87 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0/src/cc_session_tools.egg-info}/PKG-INFO +5 -1
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/SOURCES.txt +1 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_bundle_discovery.py +12 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/LICENSE +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/setup.cfg +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccd.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccmsg.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccr.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccs.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccsched.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/ccst.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_ccmsg.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_ccsched.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_sessions_db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_telemetry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/config/hooks-bundle.json +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/config/session-tag-hook.json +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/hooks_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/claude_flags.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/claude_md_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/context_overrides.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/debug.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/doctor.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/doctor_mutes.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/hook_registry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/install_sync.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/levenshtein.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/machine_identity.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/addressing.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/cursor.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/lock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/message.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/move_safety.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/repository.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/retention.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/service.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/occupancy.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/paths.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/backup.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/classify.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/cutover.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/dump.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/formatting.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/importers.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/init_paths.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/init_service.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/manifest.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/naming.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/rehydrate.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/rename_group.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/reorganize.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/repository.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/resolve.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/service.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/session_output.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_check.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_lock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_notify.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/vector_clock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/vector_clock_store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/verify.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/write_log.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/picker.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/proc_lock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/prompts.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/roots.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/rules.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/bundled_jobs.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/cadence.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/cursor.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/digest.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/due.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/duration.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/jobspec.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/ledger.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/lock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/notify.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/reconcile.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/registry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/runner.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/state.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/surface.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/throttle.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/worker.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/session_gc.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/sessions.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/sessions_db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/sessions_repair.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/shell_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/tasklist.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/telemetry_store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/prompts/pdata-migration-claude-md-update.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/prompts/pdata-migration-skills-update.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/analyse-cc-usage/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/clean-hook-sessions/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/clean-hook-sessions/scripts/clean-hook-sessions.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/context-override/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/delete-sessions/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/delete-sessions/scripts/delete_sessions.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/do-executor-critic-assessor-loop/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/find-claude-code-session/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/generate-8digit-code/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/generate-8digit-code/scripts/generate_8digit_code.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/list-empty-sessions/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/list-empty-sessions/scripts/list_empty_sessions.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/manage-recurring-cc-jobs-using-ccsched/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/move-session/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/move-session/hooks/sessionstart-pending-rename.sh +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/move-session/scripts/cc_session_rules.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/move-session/scripts/move_session.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-pdata-conflict-resolution/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-pdata-do-audit-and-prepare-to-migrate/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-pdata-do-migrate/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-pdata-schema-design/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-project-init/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-project-layout-reference/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/pm-update-central-files/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/CALIBRATION.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/analyze_context.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/duplicates.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/measure.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/report.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/tokens.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/reduce-persistent-context/scripts/usage.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/select-agent-model/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/send-session-message/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/update-command-cache/SKILL.md +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/update-command-cache/scripts/update_command_cache.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/dependency_links.txt +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/entry_points.txt +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/requires.txt +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/top_level.txt +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/attribution.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/cache.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/ccusage_wrapper.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/data/pricing.json +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/parent_inference.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/parser.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/pricing.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/query.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/report.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/schema.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/claude_code_usage/session_names.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/__init__.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/after_response.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/bash_hard_deny.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/bash_security_review.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/cache.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/catchup.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/confirm_8digit.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/context_window_warning.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/last_screenshot.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/marker_allow.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/markers.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/messaging_deliver.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/model_info.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/normalise.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/pdata_sync.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/pending_migration.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/pending_rename.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/session_tag.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/stats.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/telemetry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/telemetry_query.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/telemetry_trim.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/transcript.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/hooks/worklog_guard.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_after_response.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_attribution.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_bash_hard_deny.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_bash_security_review.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cache.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cache_sqlite.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccr_orphans.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_emptiness.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_eta.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_list_mode.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_scope_flags.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_sentinel_sort.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccs_session_counts.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_ccsched_jobs_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_context_override_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_doctor.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_gc_prune.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_gc_report.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_hook_dispatcher.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_hooks_install_prune.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_hooks_install_zero_arg.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_hooks_uninstall.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_install_everything.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_machine_identity_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_main_gate.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_init_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_reconcile_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_rename_group_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_reorganize_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_sync_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_pdata_verify_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_repair_sessions_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_sessions_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_shell_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_skills_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_skills_uninstall.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_telemetry_query.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccst_telemetry_trim.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_ccusage_wrapper.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_claude_flags.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_claude_md_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli_ccd.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli_ccd_dry_run.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli_ccr.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli_ccs.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_cli_version.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_confirm_8digit.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_context_overrides.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_context_window_warning.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_debug.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_doctor_mutes.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_empty_session.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_hook_cache.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_hooks_install.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_install_sync.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_last_screenshot.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_levenshtein.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_machine_identity.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_marker_allow.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_migrate_ccmsg.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_migrate_ccsched.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_migrate_sessions_db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_migrate_telemetry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_model_info.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_normalise.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_occupancy.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_parent_inference.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_parser.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_paths.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_pending_migration_hook.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_picker.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_pricing.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_proc_lock.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_prompts.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_query.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_report.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_roots.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_rules.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_scheduler_bundled_jobs.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_schema.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_session_names.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_session_tag.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_sessions.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_sessions_db.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_sessions_repair.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_tasklist.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_telemetry.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_telemetry_store.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_transcript.py +0 -0
- {cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/tests/test_worklog_guard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cc-session-tools
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Claude Code session management CLI tools (ccd, ccr, ccs, claude-code-usage, ccst) and hook library (hooks package)
|
|
5
5
|
Author: raffishquartan
|
|
6
6
|
License: MIT License
|
|
@@ -575,6 +575,10 @@ Curates the SHA-256 command cache the `bash-security-review` hook reads (`CCCS_U
|
|
|
575
575
|
|
|
576
576
|
Archives (tar.gz, verified) then deletes `bash-security-review`'s own hook-security-check session transcripts — those whose first user message begins "Review this shell command for security risks" — which otherwise pile up by the thousands and pollute `claude --resume`/`--continue`. Triggers on "clean up hook sessions", "archive old hook security sessions", or `--resume` being cluttered with security-check conversations. Dry-run by default; 8-digit gated for `--execute` (via `generate-8digit-code`). Also runs unattended weekly via the bundled `clean-hook-sessions-weekly` job (see [Scheduled-task catch-up](#scheduled-task-catch-up)).
|
|
577
577
|
|
|
578
|
+
### `compact-smart`
|
|
579
|
+
|
|
580
|
+
Drafts the compaction-preservation paragraph you'd otherwise ask Claude for by hand before `/compact`, then hands back the exact `/compact <paragraph>` command to run — it never invokes `/compact` itself (Claude Code excludes that command from what a skill can invoke). Triggers on `/compact-smart`, "give me a paragraph to pass to compact", "draft a compact instruction", "help me compact this session". Covers decisions and their rationale (especially mid-session corrections), file/PR/branch pointers, standing constraints, and outstanding tasks split into "Claude's next steps" vs. "the user's own to-dos" — then shows you the draft to confirm or edit (including dropping an unrelated thread) before finalizing. Refreshes the session's `working/WORKLOG.md` if one already exists (never creates one), which also clears the `worklog-guard` PreCompact hook's staleness gate for the command it hands back.
|
|
581
|
+
|
|
578
582
|
See `docs/design.md` for the full design and CLI contract.
|
|
579
583
|
|
|
580
584
|
## Inter-session messaging
|
|
@@ -518,6 +518,10 @@ Curates the SHA-256 command cache the `bash-security-review` hook reads (`CCCS_U
|
|
|
518
518
|
|
|
519
519
|
Archives (tar.gz, verified) then deletes `bash-security-review`'s own hook-security-check session transcripts — those whose first user message begins "Review this shell command for security risks" — which otherwise pile up by the thousands and pollute `claude --resume`/`--continue`. Triggers on "clean up hook sessions", "archive old hook security sessions", or `--resume` being cluttered with security-check conversations. Dry-run by default; 8-digit gated for `--execute` (via `generate-8digit-code`). Also runs unattended weekly via the bundled `clean-hook-sessions-weekly` job (see [Scheduled-task catch-up](#scheduled-task-catch-up)).
|
|
520
520
|
|
|
521
|
+
### `compact-smart`
|
|
522
|
+
|
|
523
|
+
Drafts the compaction-preservation paragraph you'd otherwise ask Claude for by hand before `/compact`, then hands back the exact `/compact <paragraph>` command to run — it never invokes `/compact` itself (Claude Code excludes that command from what a skill can invoke). Triggers on `/compact-smart`, "give me a paragraph to pass to compact", "draft a compact instruction", "help me compact this session". Covers decisions and their rationale (especially mid-session corrections), file/PR/branch pointers, standing constraints, and outstanding tasks split into "Claude's next steps" vs. "the user's own to-dos" — then shows you the draft to confirm or edit (including dropping an unrelated thread) before finalizing. Refreshes the session's `working/WORKLOG.md` if one already exists (never creates one), which also clears the `worklog-guard` PreCompact hook's staleness gate for the command it hands back.
|
|
524
|
+
|
|
521
525
|
See `docs/design.md` for the full design and CLI contract.
|
|
522
526
|
|
|
523
527
|
## Inter-session messaging
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cc-session-tools"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.2.0"
|
|
8
8
|
description = "Claude Code session management CLI tools (ccd, ccr, ccs, claude-code-usage, ccst) and hook library (hooks package)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: compact-smart
|
|
3
|
+
description: Draft a compaction-preservation paragraph from the current session and hand back the exact /compact command to run - automates what the user otherwise asks for by hand ("give me a paragraph to pass to /compact"). Use when the user runs /compact-smart, or says "give me a paragraph to pass to compact", "draft a compact instruction", "help me compact this session", "what should I tell compact to keep", or is about to /compact and wants to be sure nothing important gets lost.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# compact-smart
|
|
7
|
+
|
|
8
|
+
Drafts the instructions `/compact [instructions]` should carry, then hands back the exact
|
|
9
|
+
command to run. Does **not** invoke `/compact` itself - Claude Code's own docs explicitly
|
|
10
|
+
exclude `/compact` from the set of built-in commands a skill can invoke, so the deliverable
|
|
11
|
+
here is a ready-to-run command, not a compaction event.
|
|
12
|
+
|
|
13
|
+
## Why this exists
|
|
14
|
+
|
|
15
|
+
Real usage (a week of transcripts across every project) shows the user asking, by hand, for
|
|
16
|
+
"a paragraph to pass to /compact" roughly 3 times for every bare `/compact` call - and
|
|
17
|
+
re-explaining what counts as "relevant" nearly every time. What already survives compaction
|
|
18
|
+
automatically (project-root `CLAUDE.md`, memory files, system/environment info) is re-loaded
|
|
19
|
+
fresh from disk; what does **not** reliably survive is anything that only ever existed in
|
|
20
|
+
the conversation itself - decisions, corrections, standing agreements, outstanding to-dos.
|
|
21
|
+
A `/compact` instruction protects those for the *next* compaction only; the resulting
|
|
22
|
+
summary is itself just conversation text again and can be trimmed by a *later* one - so this
|
|
23
|
+
skill also refreshes the session's `WORKLOG.md`, if it has one, as a second, more durable
|
|
24
|
+
safeguard.
|
|
25
|
+
|
|
26
|
+
## What to draft
|
|
27
|
+
|
|
28
|
+
Review the conversation so far (you already have it loaded - no need to re-read the
|
|
29
|
+
transcript file from disk) and produce a paragraph covering, in this order:
|
|
30
|
+
|
|
31
|
+
1. **Decisions and their rationale** - especially any point where the initial plan or
|
|
32
|
+
approach was found wrong and corrected mid-session. State the corrected approach and WHY
|
|
33
|
+
it changed, not just what the original plan was.
|
|
34
|
+
2. **Concrete artifact pointers** - file paths, PR numbers, branch names, commit hashes,
|
|
35
|
+
OpenSpec change names, or anything else someone would need to go find the actual work.
|
|
36
|
+
3. **Standing constraints or policies** established or confirmed during this session that
|
|
37
|
+
must carry forward (e.g. "no attribution lines in commits", "confirm before opening a
|
|
38
|
+
PR", a data-handling rule agreed mid-session). These are easy for a generic summary to
|
|
39
|
+
drop silently because they're usually stated once, early, and never repeated.
|
|
40
|
+
4. **Outstanding tasks, split into two distinct groups**: what you (Claude) will do next,
|
|
41
|
+
and - separately and explicitly labeled - anything that is the *user's own* action to
|
|
42
|
+
take (e.g. "you still need to delete branch X yourself", "review the PR before merging").
|
|
43
|
+
Do not fold these two categories together.
|
|
44
|
+
5. **An explicit "what happens next" statement.** Never leave this implicit.
|
|
45
|
+
|
|
46
|
+
Keep it dense and concrete - file paths and specific facts, not vague summary language.
|
|
47
|
+
|
|
48
|
+
## Handling `working/WORKLOG.md`
|
|
49
|
+
|
|
50
|
+
Check whether the current session has one: `$CLD_SESSION_DIR/working/WORKLOG.md`.
|
|
51
|
+
|
|
52
|
+
- **If it exists**: update it with the same substance as the draft above (append or rewrite
|
|
53
|
+
its "current state" section - match whatever structure the file already uses). This
|
|
54
|
+
repo's own `worklog-guard` PreCompact hook blocks a manual `/compact` if this file is more
|
|
55
|
+
than an hour stale, so refreshing it here also clears that gate for the command you're
|
|
56
|
+
about to hand back.
|
|
57
|
+
- **If it does not exist**: do not create one. `ccd`/`ccr` never create a WORKLOG.md
|
|
58
|
+
automatically - it is opt-in scratch content the user or Claude may choose to keep during
|
|
59
|
+
a session, not mandatory state. Creating one here for the first time would be the skill
|
|
60
|
+
inventing a convention that has never applied to this session.
|
|
61
|
+
|
|
62
|
+
## Confirmation step
|
|
63
|
+
|
|
64
|
+
Show the drafted paragraph to the user before finalizing anything. Do not skip this even if
|
|
65
|
+
the draft feels obviously complete - the point is to catch a miss before compaction discards
|
|
66
|
+
the detail, not after. Accept:
|
|
67
|
+
|
|
68
|
+
- Approval as-is, or
|
|
69
|
+
- Free-form edits, or
|
|
70
|
+
- An explicit exclusion ("drop the X thread, keep everything else") - a stale, unrelated
|
|
71
|
+
tangent that happened to occur in the same session is a real, recurring case; when asked,
|
|
72
|
+
remove that content from the paragraph rather than trying to talk the user out of it.
|
|
73
|
+
|
|
74
|
+
This is a single review-and-edit round, not a multi-question interview - draft first, then
|
|
75
|
+
let the user correct it in one pass. Asking a series of clarifying questions before drafting
|
|
76
|
+
anything reintroduces exactly the friction this skill exists to remove.
|
|
77
|
+
|
|
78
|
+
## Final output
|
|
79
|
+
|
|
80
|
+
Once confirmed, present the exact command on its own line, ready to copy or type verbatim:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
/compact <finalized paragraph>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Do not summarize what you're about to do instead of showing the literal command - the
|
|
87
|
+
command itself is the deliverable.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cc-session-tools
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Claude Code session management CLI tools (ccd, ccr, ccs, claude-code-usage, ccst) and hook library (hooks package)
|
|
5
5
|
Author: raffishquartan
|
|
6
6
|
License: MIT License
|
|
@@ -575,6 +575,10 @@ Curates the SHA-256 command cache the `bash-security-review` hook reads (`CCCS_U
|
|
|
575
575
|
|
|
576
576
|
Archives (tar.gz, verified) then deletes `bash-security-review`'s own hook-security-check session transcripts — those whose first user message begins "Review this shell command for security risks" — which otherwise pile up by the thousands and pollute `claude --resume`/`--continue`. Triggers on "clean up hook sessions", "archive old hook security sessions", or `--resume` being cluttered with security-check conversations. Dry-run by default; 8-digit gated for `--execute` (via `generate-8digit-code`). Also runs unattended weekly via the bundled `clean-hook-sessions-weekly` job (see [Scheduled-task catch-up](#scheduled-task-catch-up)).
|
|
577
577
|
|
|
578
|
+
### `compact-smart`
|
|
579
|
+
|
|
580
|
+
Drafts the compaction-preservation paragraph you'd otherwise ask Claude for by hand before `/compact`, then hands back the exact `/compact <paragraph>` command to run — it never invokes `/compact` itself (Claude Code excludes that command from what a skill can invoke). Triggers on `/compact-smart`, "give me a paragraph to pass to compact", "draft a compact instruction", "help me compact this session". Covers decisions and their rationale (especially mid-session corrections), file/PR/branch pointers, standing constraints, and outstanding tasks split into "Claude's next steps" vs. "the user's own to-dos" — then shows you the draft to confirm or edit (including dropping an unrelated thread) before finalizing. Refreshes the session's `working/WORKLOG.md` if one already exists (never creates one), which also clears the `worklog-guard` PreCompact hook's staleness gate for the command it hands back.
|
|
581
|
+
|
|
578
582
|
See `docs/design.md` for the full design and CLI contract.
|
|
579
583
|
|
|
580
584
|
## Inter-session messaging
|
|
@@ -108,6 +108,7 @@ src/cc_session_tools/prompts/pdata-migration-skills-update.md
|
|
|
108
108
|
src/cc_session_tools/skills/analyse-cc-usage/SKILL.md
|
|
109
109
|
src/cc_session_tools/skills/clean-hook-sessions/SKILL.md
|
|
110
110
|
src/cc_session_tools/skills/clean-hook-sessions/scripts/clean-hook-sessions.py
|
|
111
|
+
src/cc_session_tools/skills/compact-smart/SKILL.md
|
|
111
112
|
src/cc_session_tools/skills/context-override/SKILL.md
|
|
112
113
|
src/cc_session_tools/skills/delete-sessions/SKILL.md
|
|
113
114
|
src/cc_session_tools/skills/delete-sessions/scripts/delete_sessions.py
|
|
@@ -151,3 +151,15 @@ def test_pm_pdata_audit_and_migrate_are_bundled_skills():
|
|
|
151
151
|
discovered = {p.name for p in ccst._discover_skills(ccst._discover_source_dir())}
|
|
152
152
|
assert "pm-pdata-do-audit-and-prepare-to-migrate" in discovered
|
|
153
153
|
assert "pm-pdata-do-migrate" in discovered
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def test_compact_smart_is_a_bundled_skill():
|
|
157
|
+
"""compact-smart drafts a /compact preservation paragraph and hands back the exact
|
|
158
|
+
command to run - see openspec/changes/add-compact-smart-skill (archived) for the design.
|
|
159
|
+
Pure instruction skill, no backing script - this discovery assertion plus a frontmatter
|
|
160
|
+
sanity check is the extent of what's mechanically testable (design.md Decision 1)."""
|
|
161
|
+
skills = {p.name: p for p in ccst._discover_skills(ccst._discover_source_dir())}
|
|
162
|
+
assert "compact-smart" in skills
|
|
163
|
+
text = (skills["compact-smart"] / "SKILL.md").read_text()
|
|
164
|
+
assert text.startswith("---\nname: compact-smart\n")
|
|
165
|
+
assert "/compact-smart" in text
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_ccsched.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_sessions_db.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/cli/migrate_telemetry.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/config/hooks-bundle.json
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/config/session-tag-hook.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/claude_md_install.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/context_overrides.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/machine_identity.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/__init__.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/addressing.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/cursor.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/lock.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/message.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/move_safety.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/repository.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/retention.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/service.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/messaging/store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/classify.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/formatting.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/importers.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/init_paths.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/init_service.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/manifest.py
RENAMED
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/rehydrate.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/rename_group.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/reorganize.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/session_output.py
RENAMED
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_check.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_lock.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/sync_notify.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/vector_clock.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/pdata/write_log.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/__init__.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/bundled_jobs.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/cadence.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/cursor.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/digest.py
RENAMED
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/duration.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/jobspec.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/ledger.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/lock.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/notify.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/reconcile.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/registry.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/runner.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/state.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/store.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/surface.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/throttle.py
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/scheduler/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/sessions_repair.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/lib/telemetry_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools/skills/move-session/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/requires.txt
RENAMED
|
File without changes
|
{cc_session_tools-3.1.0 → cc_session_tools-3.2.0}/src/cc_session_tools.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|