opencode-skills-collection 4.0.0 → 4.0.1
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.
- package/bundled-skills/.antigravity-install-manifest.json +24 -1
- package/bundled-skills/007/SKILL.md +2 -2
- package/bundled-skills/10-andruia-skill-smith/SKILL.md +1 -1
- package/bundled-skills/agent-squad/SKILL.md +5 -0
- package/bundled-skills/agent-squad/alex/SKILL.md +3 -0
- package/bundled-skills/agent-squad/aria/SKILL.md +3 -0
- package/bundled-skills/agent-squad/dep/SKILL.md +3 -0
- package/bundled-skills/agent-squad/luna/SKILL.md +4 -1
- package/bundled-skills/agent-squad/mason/SKILL.md +3 -0
- package/bundled-skills/agent-squad/max/SKILL.md +3 -0
- package/bundled-skills/agent-squad/quinn/SKILL.md +3 -0
- package/bundled-skills/agent-squad/rex/SKILL.md +3 -0
- package/bundled-skills/angular/metadata.json +1 -1
- package/bundled-skills/angular-best-practices/metadata.json +1 -1
- package/bundled-skills/angular-state-management/metadata.json +1 -1
- package/bundled-skills/angular-ui-patterns/metadata.json +1 -1
- package/bundled-skills/antigravity-skill-orchestrator/SKILL.md +2 -2
- package/bundled-skills/apify-actor-development/SKILL.md +2 -2
- package/bundled-skills/apple-container/SKILL.md +165 -0
- package/bundled-skills/apple-container/references/commands.md +1593 -0
- package/bundled-skills/apple-container/references/concepts.md +294 -0
- package/bundled-skills/apple-container/references/configuration.md +499 -0
- package/bundled-skills/apple-container/references/workflows.md +498 -0
- package/bundled-skills/ask-copilot/SKILL.md +112 -0
- package/bundled-skills/auto-research/SKILL.md +126 -0
- package/bundled-skills/brooks-lint/SKILL.md +1 -1
- package/bundled-skills/browser-harness/references/install.md +3 -1
- package/bundled-skills/chrome-extension-developer/SKILL.md +1 -1
- package/bundled-skills/clean-code-guard/SKILL.md +184 -0
- package/bundled-skills/clean-code-guard/references/ai-failure-modes.md +345 -0
- package/bundled-skills/clean-code-guard/references/comments-and-formatting.md +115 -0
- package/bundled-skills/clean-code-guard/references/dry-kiss-yagni.md +133 -0
- package/bundled-skills/clean-code-guard/references/naming-and-functions.md +187 -0
- package/bundled-skills/clean-code-guard/references/review-checklist.md +150 -0
- package/bundled-skills/clean-code-guard/references/solid.md +280 -0
- package/bundled-skills/clean-code-guard/references/sources.md +47 -0
- package/bundled-skills/cloudflare-security-audit/SKILL.md +137 -0
- package/bundled-skills/cloudflare-security-audit/references/AI-AND-LLM.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/ATTACK-CLASSES.md +116 -0
- package/bundled-skills/cloudflare-security-audit/references/CLIENT-SIDE.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/HUNTING.md +110 -0
- package/bundled-skills/cloudflare-security-audit/references/MEMORY-SAFETY-AND-BINARY.md +58 -0
- package/bundled-skills/cloudflare-security-audit/references/RECONNAISSANCE.md +46 -0
- package/bundled-skills/cloudflare-security-audit/references/VALIDATION-AND-REPORTING.md +109 -0
- package/bundled-skills/cloudflare-security-audit/references/WEB-PROTOCOL-AND-AUTH.md +85 -0
- package/bundled-skills/cloudflare-security-audit/resources/report-schema.json +210 -0
- package/bundled-skills/comfyui-gateway/references/troubleshooting.md +1 -1
- package/bundled-skills/commit/SKILL.md +2 -1
- package/bundled-skills/deepapi/SKILL.md +6 -6
- package/bundled-skills/docs/README.md +1 -1
- package/bundled-skills/docs/contributors/quality-bar.md +1 -1
- package/bundled-skills/docs/contributors/security-guardrails.md +1 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +5 -5
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -3
- package/bundled-skills/docs/maintainers/ci-drift-fix.md +7 -5
- package/bundled-skills/docs/maintainers/merge-batch.md +24 -7
- package/bundled-skills/docs/maintainers/pr-autonomy.md +89 -0
- package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +1 -1
- package/bundled-skills/docs/maintainers/release-process.md +9 -9
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +5 -5
- package/bundled-skills/docs/maintainers/skills-date-tracking.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +2 -2
- package/bundled-skills/docs/users/{antigravity-awesome-skills-vs-awesome-claude-skills.md → agentic-awesome-skills-vs-awesome-claude-skills.md} +5 -5
- package/bundled-skills/docs/users/ai-agent-skills.md +4 -4
- package/bundled-skills/docs/users/best-claude-code-skills-github.md +3 -3
- package/bundled-skills/docs/users/best-cursor-skills-github.md +3 -3
- package/bundled-skills/docs/users/bundles.md +56 -57
- package/bundled-skills/docs/users/claude-code-skills.md +6 -6
- package/bundled-skills/docs/users/codex-cli-skills.md +5 -5
- package/bundled-skills/docs/users/cursor-skills.md +3 -3
- package/bundled-skills/docs/users/faq.md +27 -15
- package/bundled-skills/docs/users/gemini-cli-skills.md +4 -4
- package/bundled-skills/docs/users/getting-started.md +22 -12
- package/bundled-skills/docs/users/kiro-integration.md +7 -7
- package/bundled-skills/docs/users/plugins.md +8 -9
- package/bundled-skills/docs/users/security-skills.md +1 -1
- package/bundled-skills/docs/users/skills-vs-mcp-tools.md +1 -1
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +3 -4
- package/bundled-skills/docs/users/usage.md +9 -9
- package/bundled-skills/docs/users/visual-guide.md +7 -7
- package/bundled-skills/docs/users/windows-truncation-recovery.md +1 -1
- package/bundled-skills/docs/users/workflows.md +1 -1
- package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/FAQ.vi.md +15 -8
- package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +12 -5
- package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/README.vi.md +21 -17
- package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +2 -2
- package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +8 -8
- package/bundled-skills/docs-guard/SKILL.md +109 -0
- package/bundled-skills/docs-guard/references/code-samples.md +46 -0
- package/bundled-skills/docs-guard/references/docstrings.md +60 -0
- package/bundled-skills/docs-guard/references/review-checklist.md +45 -0
- package/bundled-skills/docs-guard/references/sources.md +22 -0
- package/bundled-skills/docs-guard/references/verification.md +51 -0
- package/bundled-skills/efficient-web-research/SKILL.md +4 -0
- package/bundled-skills/electron-development/SKILL.md +1 -1
- package/bundled-skills/event-staffing-compliance/SKILL.md +3 -0
- package/bundled-skills/event-staffing-ordering/SKILL.md +3 -0
- package/bundled-skills/feature-tracking/SKILL.md +222 -0
- package/bundled-skills/flutter-expert/SKILL.md +6 -1
- package/bundled-skills/flutter-expert/resources/implementation-playbook.md +214 -0
- package/bundled-skills/gemini-deep-research/README.md +246 -0
- package/bundled-skills/gemini-deep-research/SKILL.md +136 -0
- package/bundled-skills/gemini-deep-research/requirements.txt +2 -0
- package/bundled-skills/gemini-deep-research/scripts/research.py +692 -0
- package/bundled-skills/git-pushing/SKILL.md +21 -4
- package/bundled-skills/git-pushing/scripts/smart_commit.sh +206 -11
- package/bundled-skills/go-in-depth/scripts/workflow-script.js +4 -1
- package/bundled-skills/grok-build/SKILL.md +167 -0
- package/bundled-skills/grok-build/references/cli.md +99 -0
- package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +1 -1
- package/bundled-skills/idea-autopsy/SKILL.md +147 -0
- package/bundled-skills/it-manager-hospital/README.md +1 -1
- package/bundled-skills/it-manager-pro/README.md +1 -1
- package/bundled-skills/itil-expert/README.md +1 -1
- package/bundled-skills/langgraph/SKILL.md +1 -1
- package/bundled-skills/linkedin-content-generator/SKILL.md +1 -1
- package/bundled-skills/lint-and-validate/scripts/lint_runner.py +23 -23
- package/bundled-skills/lint-and-validate/scripts/type_coverage.py +30 -30
- package/bundled-skills/logic-lens/SKILL.md +1 -1
- package/bundled-skills/lore/LICENSE +21 -0
- package/bundled-skills/lore/README.md +386 -0
- package/bundled-skills/lore/README.zh-CN.md +386 -0
- package/bundled-skills/lore/SKILL.md +453 -0
- package/bundled-skills/lore/WORKFLOWS.md +216 -0
- package/bundled-skills/lore/WORKFLOWS.zh-CN.md +216 -0
- package/bundled-skills/lore/references/audit-template.md +60 -0
- package/bundled-skills/lore/references/compatibility.md +228 -0
- package/bundled-skills/lore/references/config.md +125 -0
- package/bundled-skills/lore/references/entry-format.md +70 -0
- package/bundled-skills/lore/references/history-command.md +106 -0
- package/bundled-skills/lore/references/monorepo-detection.md +78 -0
- package/bundled-skills/lore/references/platform-mirrors.md +377 -0
- package/bundled-skills/lore/references/stale-new-markers.md +62 -0
- package/bundled-skills/lore/references/summary-template.md +98 -0
- package/bundled-skills/lore/scripts/README.md +54 -0
- package/bundled-skills/lore/scripts/README.zh-CN.md +54 -0
- package/bundled-skills/lore/scripts/find_duplicates.py +211 -0
- package/bundled-skills/lore/scripts/find_stale.py +116 -0
- package/bundled-skills/lore/scripts/history.py +527 -0
- package/bundled-skills/lore/scripts/id_hash.py +32 -0
- package/bundled-skills/lore/scripts/list_entries.py +183 -0
- package/bundled-skills/lovable-cleanup/SKILL.md +3 -3
- package/bundled-skills/makepad-splash/SKILL.md +1 -1
- package/bundled-skills/mmx-cli/SKILL.md +14 -1
- package/bundled-skills/monopoly/SKILL.md +5 -0
- package/bundled-skills/monopoly/patterns/SKILL.md +4 -0
- package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +4 -0
- package/bundled-skills/monopoly/security-checklist/SKILL.md +4 -0
- package/bundled-skills/monopoly/tech-matrix/SKILL.md +4 -0
- package/bundled-skills/mtls-configuration/SKILL.md +1 -1
- package/bundled-skills/network-101/SKILL.md +4 -5
- package/bundled-skills/nika/SKILL.md +270 -0
- package/bundled-skills/not-a-vibe-coder/SKILL.md +4 -0
- package/bundled-skills/ontoly-software-graph/SKILL.md +160 -0
- package/bundled-skills/openclaw-github-repo-commander/SKILL.md +1 -1
- package/bundled-skills/pilot-protocol/SKILL.md +6 -3
- package/bundled-skills/postgres-readonly-queries/README.md +77 -0
- package/bundled-skills/postgres-readonly-queries/SKILL.md +152 -0
- package/bundled-skills/postgres-readonly-queries/connections.example.json +34 -0
- package/bundled-skills/postgres-readonly-queries/requirements.txt +1 -0
- package/bundled-skills/postgres-readonly-queries/scripts/query.py +262 -0
- package/bundled-skills/pptx-deck-creation/SKILL.md +275 -0
- package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +156 -0
- package/bundled-skills/pptx-deck-creation/references/design-profiles.md +96 -0
- package/bundled-skills/pptx-deck-creation/references/python-snippets.md +150 -0
- package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +91 -0
- package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +158 -0
- package/bundled-skills/privilege-escalation-methods/SKILL.md +1 -1
- package/bundled-skills/product-decision-agent/SKILL.md +94 -0
- package/bundled-skills/product-decision-agent/agents/openai.yaml +7 -0
- package/bundled-skills/product-decision-agent/references/methodology-basis.md +232 -0
- package/bundled-skills/product-decision-agent/references/product-playbooks.md +813 -0
- package/bundled-skills/product-decision-agent/references/reasoning-engine.md +289 -0
- package/bundled-skills/product-decision-agent/references/response-examples.md +279 -0
- package/bundled-skills/product-decision-agent/scripts/quality_gate.py +221 -0
- package/bundled-skills/product-decision-agent/scripts/test_quality_gate.py +94 -0
- package/bundled-skills/pytest-skill/reference/playbook.md +358 -0
- package/bundled-skills/quit-sponsor/SKILL.md +96 -0
- package/bundled-skills/rclone-cli/references/providers/s3.md +1 -1
- package/bundled-skills/security-and-hardening/SKILL.md +1 -1
- package/bundled-skills/semgrep-rule-creator/SKILL.md +6 -6
- package/bundled-skills/skill-creator/README.md +3 -3
- package/bundled-skills/skill-creator/SKILL.md +8 -4
- package/bundled-skills/skill-creator/scripts/quick_validate.py +1 -1
- package/bundled-skills/sql-injection-testing/SKILL.md +4 -4
- package/bundled-skills/subagent-orchestrator/README.md +1 -1
- package/bundled-skills/super-code/bash/SKILL.md +3 -0
- package/bundled-skills/super-code/c/SKILL.md +3 -0
- package/bundled-skills/super-code/cpp/SKILL.md +3 -0
- package/bundled-skills/super-code/csharp/SKILL.md +3 -0
- package/bundled-skills/super-code/dart/SKILL.md +3 -0
- package/bundled-skills/super-code/elixir/SKILL.md +3 -0
- package/bundled-skills/super-code/go/SKILL.md +3 -0
- package/bundled-skills/super-code/java/SKILL.md +3 -0
- package/bundled-skills/super-code/kotlin/SKILL.md +3 -0
- package/bundled-skills/super-code/php/SKILL.md +3 -0
- package/bundled-skills/super-code/python/SKILL.md +3 -0
- package/bundled-skills/super-code/ruby/SKILL.md +3 -0
- package/bundled-skills/super-code/rust/SKILL.md +3 -0
- package/bundled-skills/super-code/scala/SKILL.md +3 -0
- package/bundled-skills/super-code/swift/SKILL.md +3 -0
- package/bundled-skills/super-code/typescript/SKILL.md +3 -0
- package/bundled-skills/telegram-bot-messaging/README.md +185 -0
- package/bundled-skills/telegram-bot-messaging/SKILL.md +101 -0
- package/bundled-skills/telegram-bot-messaging/scripts/telegram.sh +420 -0
- package/bundled-skills/test-guard/SKILL.md +132 -0
- package/bundled-skills/test-guard/references/jest.md +50 -0
- package/bundled-skills/test-guard/references/llm-app-testing.md +40 -0
- package/bundled-skills/test-guard/references/phpunit.md +56 -0
- package/bundled-skills/test-guard/references/pytest.md +65 -0
- package/bundled-skills/trading-ledger/SKILL.md +11 -3
- package/bundled-skills/uizze-ui-research/SKILL.md +93 -0
- package/bundled-skills/vibe-code-auditor/SKILL.md +1 -1
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +1 -1
- package/bundled-skills/videodb/scripts/ws_listener.py +29 -15
- package/bundled-skills/voice-ai-engine-development/README.md +1 -1
- package/bundled-skills/vulnerability-scanner/SKILL.md +1 -1
- package/bundled-skills/warehouse/SKILL.md +154 -0
- package/bundled-skills/woo-guard/SKILL.md +113 -0
- package/bundled-skills/woo-guard/references/checkout-and-money.md +64 -0
- package/bundled-skills/woo-guard/references/hpos-and-crud.md +87 -0
- package/bundled-skills/woo-guard/references/review-checklist.md +44 -0
- package/bundled-skills/woo-guard/references/sources.md +17 -0
- package/bundled-skills/wp-guard/SKILL.md +119 -0
- package/bundled-skills/wp-guard/references/i18n.md +88 -0
- package/bundled-skills/wp-guard/references/performance.md +70 -0
- package/bundled-skills/wp-guard/references/review-checklist.md +57 -0
- package/bundled-skills/wp-guard/references/security.md +100 -0
- package/bundled-skills/wp-guard/references/sources.md +27 -0
- package/bundled-skills/writing-skills/gotchas.md +1 -1
- package/bundled-skills/writing-skills/references/standards/metadata-standard.md +1 -1
- package/bundled-skills/x-twitter-scraper/SKILL.md +14 -32
- package/bundled-skills/xss-html-injection/SKILL.md +3 -3
- package/bundled-skills/youtube-seo-optimizer/SKILL.md +1 -1
- package/bundled-skills/youtube-summarizer/CHANGELOG.md +2 -2
- package/package.json +1 -1
- package/skills_index.json +273 -0
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
# `container` — Task-Oriented Workflows
|
|
2
|
+
|
|
3
|
+
Copy-pasteable recipes for Apple's `container` CLI (`apple/container`) — Linux containers as
|
|
4
|
+
lightweight VMs on Apple-silicon macOS. This is **Apple's `container`, not Docker**: flags,
|
|
5
|
+
defaults, and the daemon model differ. See `commands.md` for the full flag reference. Use
|
|
6
|
+
fully-qualified image refs (`docker.io/library/alpine`) in scripts. `container` targets
|
|
7
|
+
**macOS 26**; several features are gated (called out inline).
|
|
8
|
+
|
|
9
|
+
> **Version:** recipes track the **1.0.0** release. `container cp`, `container prune`,
|
|
10
|
+
> `container image prune`, and `container system version` used below were added in 1.0.0 (not in
|
|
11
|
+
> 0.7.1) — run `container --help` to confirm your installed surface.
|
|
12
|
+
|
|
13
|
+
## Recipes
|
|
14
|
+
|
|
15
|
+
- [First run: install + start + first container](#first-run-install--start--first-container)
|
|
16
|
+
- [Run interactive vs detached](#run-interactive-vs-detached)
|
|
17
|
+
- [Publish ports](#publish-ports)
|
|
18
|
+
- [Set environment variables](#set-environment-variables)
|
|
19
|
+
- [Mounts: bind, volume, tmpfs](#mounts-bind-volume-tmpfs)
|
|
20
|
+
- [Build an image from a Dockerfile](#build-an-image-from-a-dockerfile)
|
|
21
|
+
- [Multi-tag, build-args, no-cache, target](#multi-tag-build-args-no-cache-target)
|
|
22
|
+
- [Tag & push to Docker Hub / private registry](#tag--push-to-docker-hub--private-registry)
|
|
23
|
+
- [Set the default registry](#set-the-default-registry)
|
|
24
|
+
- [Container-to-container networking](#container-to-container-networking)
|
|
25
|
+
- [Local DNS domain for name resolution](#local-dns-domain-for-name-resolution)
|
|
26
|
+
- [Custom isolated networks (macOS 26)](#custom-isolated-networks-macos-26)
|
|
27
|
+
- [Inspect a container](#inspect-a-container)
|
|
28
|
+
- [View logs](#view-logs)
|
|
29
|
+
- [Exec into a running container](#exec-into-a-running-container)
|
|
30
|
+
- [Copy files in and out](#copy-files-in-and-out)
|
|
31
|
+
- [Resource limits (CPU / memory)](#resource-limits-cpu--memory)
|
|
32
|
+
- [Cleanup: stop, remove, prune](#cleanup-stop-remove-prune)
|
|
33
|
+
- [Upgrade / downgrade / uninstall](#upgrade--downgrade--uninstall)
|
|
34
|
+
- [Troubleshooting](#troubleshooting)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### First run: install + start + first container
|
|
39
|
+
|
|
40
|
+
There is **no CLI installer command** — download and double-click the signed `.pkg`, then start
|
|
41
|
+
the services and run a container.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 1. Download the signed installer .pkg from the GitHub releases page:
|
|
45
|
+
# https://github.com/apple/container/releases
|
|
46
|
+
# Double-click the .pkg and follow the prompts (admin password installs under /usr/local).
|
|
47
|
+
|
|
48
|
+
# 2. Start the background services. On first run this prompts to install the default Linux kernel.
|
|
49
|
+
container system start
|
|
50
|
+
|
|
51
|
+
# 3. Verify (empty list is expected on a fresh install).
|
|
52
|
+
container list --all
|
|
53
|
+
|
|
54
|
+
# 4. Run your first container.
|
|
55
|
+
container run --rm -it docker.io/library/alpine:latest sh
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Note: double-clicking the `.pkg` is the only install path; `container system start` prompts for the recommended kernel (or use `container system kernel set --recommended`).
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Run interactive vs detached
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Interactive shell (-i keeps stdin open, -t allocates a TTY; commonly combined as -it).
|
|
66
|
+
container run --rm -it docker.io/library/ubuntu:latest /bin/bash
|
|
67
|
+
|
|
68
|
+
# Detached, named, auto-removed on stop.
|
|
69
|
+
container run -d --name web --rm docker.io/library/nginx:latest
|
|
70
|
+
|
|
71
|
+
# One-shot command in the foreground (exits when the command finishes).
|
|
72
|
+
container run --rm docker.io/library/alpine:latest uname -a
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Note: foreground by default; stdin stays closed unless `-i`. `--rm` deletes the container after it exits.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### Publish ports
|
|
80
|
+
|
|
81
|
+
`-p` / `--publish` forwards loopback traffic to the container. Spec: `[host-ip:]host-port:container-port[/protocol]` (`tcp`/`udp`, case-insensitive).
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# host 8080 -> container 80
|
|
85
|
+
container run -d --rm -p 8080:80 docker.io/library/nginx:latest
|
|
86
|
+
|
|
87
|
+
# bind to a specific host IP
|
|
88
|
+
container run -d --rm -p 127.0.0.1:8080:8000 docker.io/library/node:latest npx http-server -a :: -p 8000
|
|
89
|
+
|
|
90
|
+
# IPv6 loopback (quote the bracketed address)
|
|
91
|
+
container run -d --rm -p '[::1]:8080:8000' docker.io/library/node:latest npx http-server -a :: -p 8000
|
|
92
|
+
|
|
93
|
+
# UDP
|
|
94
|
+
container run -d --rm -p 5353:5353/udp docker.io/library/alpine:latest
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Note: if a container attaches to multiple networks, published ports forward to the IP of the first network's interface.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Set environment variables
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Individual vars (-e / --env); repeatable. Bare `KEY` inherits from the host.
|
|
105
|
+
container run --rm -e NODE_ENV=production -e PORT=8080 docker.io/library/node:latest env
|
|
106
|
+
|
|
107
|
+
# Inherit HOME from the host shell
|
|
108
|
+
container run --rm -e HOME docker.io/library/alpine:latest sh -c 'echo $HOME'
|
|
109
|
+
|
|
110
|
+
# From a file (KEY=value per line; # comments and blanks ignored); repeatable.
|
|
111
|
+
container run --rm --env-file ./app.env docker.io/library/alpine:latest env
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Note: `-e` and `--env-file` may be combined and each repeated; later values win.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### Mounts: bind, volume, tmpfs
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Bind-mount a host folder (-v host:container). Use absolute host paths.
|
|
122
|
+
container run --rm -v "${HOME}/Desktop/assets:/content/assets" docker.io/library/python:alpine ls -l /content/assets
|
|
123
|
+
|
|
124
|
+
# Same via --mount key=value syntax.
|
|
125
|
+
container run --rm --mount source="${HOME}/Desktop/assets",target=/content/assets docker.io/library/python:alpine ls /content/assets
|
|
126
|
+
|
|
127
|
+
# Named volume (create first, then mount by name).
|
|
128
|
+
container volume create data
|
|
129
|
+
container run --rm -v data:/var/lib/app docker.io/library/alpine:latest sh
|
|
130
|
+
|
|
131
|
+
# Anonymous volume (-v /path) — NOT auto-removed by --rm; delete it yourself.
|
|
132
|
+
container run --rm -v /data docker.io/library/alpine:latest sh
|
|
133
|
+
# It leaves an anon-<id> volume. List to find the exact name, then remove THAT one by name:
|
|
134
|
+
container volume list # locate the new anon-<id> row
|
|
135
|
+
container volume rm anon-<id> # ⚠️ delete the specific volume — do NOT `grep anon | rm`, which
|
|
136
|
+
# would match (and destroy) every anonymous volume on the machine
|
|
137
|
+
|
|
138
|
+
# Read-only bind via --mount.
|
|
139
|
+
container run --rm --mount type=bind,source="${PWD}/conf",target=/etc/conf,readonly docker.io/library/alpine:latest cat /etc/conf/app.ini
|
|
140
|
+
|
|
141
|
+
# tmpfs (in-memory) mount; repeatable.
|
|
142
|
+
container run --rm --tmpfs /scratch docker.io/library/alpine:latest sh -c 'df -h /scratch'
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Note: unlike Docker, anonymous volumes do not auto-clean with `--rm` — remove them via `container volume rm`.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
### Build an image from a Dockerfile
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Build from ./Dockerfile in the current context, tag as web-test.
|
|
153
|
+
container build -t web-test .
|
|
154
|
+
|
|
155
|
+
# Explicit Dockerfile path.
|
|
156
|
+
container build -f docker/Dockerfile.prod -t web-test:prod .
|
|
157
|
+
|
|
158
|
+
# Build, then run it.
|
|
159
|
+
container build -t web-test .
|
|
160
|
+
container run -d --name my-web-server --rm web-test
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Note: with no `-f`, the builder looks for `Dockerfile` then `Containerfile`. The builder runs in its own VM (see resource-limits recipe to size it).
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### Multi-tag, build-args, no-cache, target
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# Multiple tags on one build (-t repeatable).
|
|
171
|
+
container build -t my-app:latest -t my-app:v1.0.0 .
|
|
172
|
+
|
|
173
|
+
# Build-time variables (repeatable).
|
|
174
|
+
container build --build-arg NODE_VERSION=18 --build-arg ENV=prod -t my-app .
|
|
175
|
+
|
|
176
|
+
# Skip the build cache.
|
|
177
|
+
container build --no-cache -t my-app .
|
|
178
|
+
|
|
179
|
+
# Target a specific multi-stage build stage.
|
|
180
|
+
container build --target production -t my-app:prod .
|
|
181
|
+
|
|
182
|
+
# Multi-architecture image (arm64 + amd64 via Rosetta).
|
|
183
|
+
container build --arch arm64 --arch amd64 -t docker.io/me/web-test:latest .
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Note: `--arch` is repeatable/comma-separated; `--platform` (`os/arch[/variant]`) takes precedence over `--os`/`--arch`.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### Tag & push to Docker Hub / private registry
|
|
191
|
+
|
|
192
|
+
Registry commands live under the **Image** group (`container registry`, alias `r`). Credentials are stored in the macOS keychain.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Log in (prompts for username + password, or use -u / --password-stdin).
|
|
196
|
+
container registry login docker.io
|
|
197
|
+
container registry login -u alice ghcr.io
|
|
198
|
+
echo "$TOKEN" | container registry login -u alice --password-stdin ghcr.io
|
|
199
|
+
|
|
200
|
+
# HTTP for a local registry.
|
|
201
|
+
container registry login --scheme http localhost:5000
|
|
202
|
+
|
|
203
|
+
# Tag the local image with a full registry reference.
|
|
204
|
+
container image tag web-test docker.io/alice/web-test:latest
|
|
205
|
+
|
|
206
|
+
# Push it (the final reference is printed on success).
|
|
207
|
+
container image push docker.io/alice/web-test:latest
|
|
208
|
+
|
|
209
|
+
# Private registry.
|
|
210
|
+
container image tag web-test registry.example.com/fido/web-test:latest
|
|
211
|
+
container image push registry.example.com/fido/web-test:latest
|
|
212
|
+
|
|
213
|
+
# List saved logins / log out.
|
|
214
|
+
container registry list # 1.0.0+ (added after 0.7.1)
|
|
215
|
+
container registry logout ghcr.io
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Note: the default registry is `docker.io`, so a bare `web-test:latest` resolves against Docker Hub. Change it via the `registry.domain` property (next recipe).
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### Set the default registry
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
# Inspect current properties (includes [registry] domain).
|
|
226
|
+
container system property list
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Edit `~/.config/container/config.toml`:
|
|
230
|
+
|
|
231
|
+
```toml
|
|
232
|
+
[registry]
|
|
233
|
+
domain = "registry.example.com"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Note: with `registry.domain` set, unqualified image names resolve against that host instead of `docker.io`.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### Container-to-container networking
|
|
241
|
+
|
|
242
|
+
Each container gets its own IP on the `default` vmnet network. Read it from `container ls` or `container inspect`.
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Start a server, then find its IP.
|
|
246
|
+
container run -d --name my-web-server --rm web-test
|
|
247
|
+
container ls # IP column shows e.g. 192.168.64.3
|
|
248
|
+
|
|
249
|
+
# Scriptable IP lookup via inspect + jq.
|
|
250
|
+
container inspect my-web-server | jq -r '.[0].networks[0].address'
|
|
251
|
+
|
|
252
|
+
# Reach it from another container by IP (requires macOS 26 — see note).
|
|
253
|
+
container run --rm -it web-test curl http://192.168.64.3
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Note: container-to-container access over the virtual network requires macOS 26 and **does not work on macOS 15**, where containers are isolated from one another at the network layer (see `concepts.md` §3) — a naming scheme cannot restore connectivity. The DNS domain in the next recipe resolves names **host-side only** (host → container); it does not enable container-to-container traffic on macOS 15.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
### Local DNS domain for name resolution
|
|
261
|
+
|
|
262
|
+
Register a local domain so `<name>.<domain>` resolves to a named container's IP. `dns create`/`delete` need `sudo` (writes under `/etc/resolver`).
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Create the domain (admin password required).
|
|
266
|
+
sudo container system dns create test
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Make it the default DNS domain by setting `dns.domain` in `~/.config/container/config.toml`
|
|
270
|
+
(there is no `property set` command — properties are edited in the config file):
|
|
271
|
+
|
|
272
|
+
```toml
|
|
273
|
+
[dns]
|
|
274
|
+
domain = "test"
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Now a named container is reachable as <name>.<domain>.
|
|
279
|
+
container run -d --name my-web-server --rm web-test
|
|
280
|
+
curl http://my-web-server.test
|
|
281
|
+
|
|
282
|
+
# List / remove domains.
|
|
283
|
+
container system dns list
|
|
284
|
+
sudo container system dns delete test
|
|
285
|
+
|
|
286
|
+
# Confirm the effective domain.
|
|
287
|
+
container system property list # shows [dns] domain = "test"
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Note: `container system property` only supports `list`/`ls` — set `dns.domain` via `config.toml`, not a CLI setter. A container named `my-web-server` with domain `test` answers at `my-web-server.test`.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### Custom isolated networks (macOS 26)
|
|
295
|
+
|
|
296
|
+
The entire `container network` group **requires macOS 26** (absent on macOS 15, which has only the single default subnet).
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# Create an isolated network.
|
|
300
|
+
container network create foo
|
|
301
|
+
|
|
302
|
+
# With custom subnets.
|
|
303
|
+
container network create foo --subnet 192.168.100.0/24 --subnet-v6 fd00:1234::/64
|
|
304
|
+
|
|
305
|
+
# Attach a container to it.
|
|
306
|
+
container run -d --name my-web-server --network foo --rm web-test
|
|
307
|
+
|
|
308
|
+
# List / delete (detach all containers first).
|
|
309
|
+
container network list
|
|
310
|
+
container stop my-web-server
|
|
311
|
+
container network delete foo
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Note: networks are mutually isolated — a container on `foo` has no connectivity to containers on `default`.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
### Inspect a container
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
# Full pretty JSON (one or more IDs).
|
|
322
|
+
container inspect my-web-server
|
|
323
|
+
|
|
324
|
+
# Extract specific fields with jq.
|
|
325
|
+
container inspect my-web-server | jq -r '.[0].status'
|
|
326
|
+
container inspect my-web-server | jq -r '.[0].networks[0].address'
|
|
327
|
+
|
|
328
|
+
# Table/JSON listing of all containers, including stopped.
|
|
329
|
+
container ls --all
|
|
330
|
+
container ls --all --format json | jq '.[] | [.configuration.id, .networks[0].address]'
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Note: `inspect` requires at least one ID; a missing ID errors. `container image inspect <ref>` does the same for images.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### View logs
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Application stdio.
|
|
341
|
+
container logs my-web-server
|
|
342
|
+
|
|
343
|
+
# Follow live output.
|
|
344
|
+
container logs -f my-web-server
|
|
345
|
+
|
|
346
|
+
# Last N lines (-n is short-only; there is no --lines).
|
|
347
|
+
container logs -n 100 my-web-server
|
|
348
|
+
|
|
349
|
+
# VM boot / init logs.
|
|
350
|
+
container logs --boot my-web-server
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Note: `--boot` shows the VM kernel + `vminitd` init log, useful for boot/networking diagnostics.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
### Exec into a running container
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Interactive shell in a running container.
|
|
361
|
+
container exec -it my-web-server sh
|
|
362
|
+
|
|
363
|
+
# One-off command.
|
|
364
|
+
container exec my-web-server ls /content
|
|
365
|
+
|
|
366
|
+
# With env / as a specific user.
|
|
367
|
+
container exec -e DEBUG=1 -u root my-web-server env
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Note: `exec` targets a **running** container and shares the same process options as `run` (`-e`, `--env-file`, `-u`, `-w`, etc.).
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
### Copy files in and out
|
|
375
|
+
|
|
376
|
+
Exactly one side must be a `container_id:path` reference. The container must be running.
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# Host -> container.
|
|
380
|
+
container cp ./config.json my-web-server:/etc/app/
|
|
381
|
+
|
|
382
|
+
# Container -> host.
|
|
383
|
+
container cp my-web-server:/var/log/app.log ./logs/
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Note: `container copy` and `container cp` are the same command.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
### Resource limits (CPU / memory)
|
|
391
|
+
|
|
392
|
+
Container defaults: 4 CPUs, 1 GiB RAM. Builder VM defaults: 2 CPUs, 2 GiB RAM.
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# Per-container limits on run/create.
|
|
396
|
+
container run --rm --cpus 8 --memory 32g docker.io/library/alpine:latest sh
|
|
397
|
+
|
|
398
|
+
# Short flags.
|
|
399
|
+
container run --rm -c 2 -m 1G docker.io/library/node:latest
|
|
400
|
+
|
|
401
|
+
# Size the builder VM before a heavy build.
|
|
402
|
+
container builder start --cpus 8 --memory 32g
|
|
403
|
+
container build -t big-app .
|
|
404
|
+
|
|
405
|
+
# Change a running builder: stop, delete, restart with new limits.
|
|
406
|
+
# ⚠️ `builder delete` discards the BuildKit builder and its layer cache — the next build
|
|
407
|
+
# re-fetches base images and rebuilds every layer from scratch.
|
|
408
|
+
container builder stop
|
|
409
|
+
container builder delete
|
|
410
|
+
container builder start --cpus 8 --memory 32g
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Note: memory accepts `K`/`M`/`G`/`T`/`P` suffixes. Monitor live usage with `container stats` (`--no-stream` for a single snapshot).
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
### Cleanup: stop, remove, prune
|
|
418
|
+
|
|
419
|
+
> **⚠️ Scope matters.** The `-a`/`--all`/`prune` variants act on **every** container, image,
|
|
420
|
+
> volume, or network on the machine — not just this project's. `container volume prune` and
|
|
421
|
+
> `container image rm --all` permanently delete data belonging to *unrelated* containers. To clean
|
|
422
|
+
> up after one workload, use the **targeted** commands (by name/tag); reach for the machine-wide
|
|
423
|
+
> ones only when you deliberately want a full sweep. Do not paste this whole block blindly.
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# --- Targeted (scoped to named resources — safe for cleaning up one workload) ---
|
|
427
|
+
container stop my-web-server # stop one container
|
|
428
|
+
container delete my-web-server # rm is an alias; add -f to remove a running one
|
|
429
|
+
container image delete web-test # remove one image by name/tag
|
|
430
|
+
container volume rm data # remove one volume by name
|
|
431
|
+
|
|
432
|
+
# --- Machine-wide (destroys ALL matching resources — use deliberately) ---
|
|
433
|
+
container stop -a # stop every running container
|
|
434
|
+
container rm --all # delete every container
|
|
435
|
+
container image rm --all # delete every image
|
|
436
|
+
container image prune # remove dangling (untagged) images only
|
|
437
|
+
container image prune -a # remove every image not used by a container
|
|
438
|
+
container volume prune # delete every volume with no container reference
|
|
439
|
+
container network prune # macOS 26+; delete every unused network
|
|
440
|
+
container prune # remove all stopped containers
|
|
441
|
+
|
|
442
|
+
# Check disk usage across images/containers/volumes.
|
|
443
|
+
container system df
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
Note: `container prune` only removes **stopped** containers. `image prune` (no `-a`) removes only dangling images.
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
### Upgrade / downgrade / uninstall
|
|
451
|
+
|
|
452
|
+
Both scripts install to `/usr/local/bin`. **Stop the services first.**
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
# Always stop before upgrading/downgrading.
|
|
456
|
+
container system stop
|
|
457
|
+
|
|
458
|
+
# Upgrade to the latest release.
|
|
459
|
+
/usr/local/bin/update-container.sh
|
|
460
|
+
|
|
461
|
+
# Downgrade: uninstall (keep user data with -k), then pin the previous release.
|
|
462
|
+
/usr/local/bin/uninstall-container.sh -k
|
|
463
|
+
/usr/local/bin/update-container.sh -v 0.7.1 # replace with the version you want
|
|
464
|
+
|
|
465
|
+
# Restart after any change.
|
|
466
|
+
container system start
|
|
467
|
+
|
|
468
|
+
# Uninstall. Default to -k (keep user data) unless you truly want everything gone.
|
|
469
|
+
/usr/local/bin/uninstall-container.sh -k # keep images/containers/volumes for a later reinstall
|
|
470
|
+
/usr/local/bin/uninstall-container.sh -d # ⚠️ also deletes ALL user data (images, containers, volumes) — irreversible
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
Note: you can also upgrade/downgrade by re-downloading and double-clicking the signed `.pkg`. `-v` pins `update-container.sh` to a specific version.
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
### Troubleshooting
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
# "XPC connection error" / commands hang -> services aren't running. Start them.
|
|
481
|
+
container system start
|
|
482
|
+
|
|
483
|
+
# Confirm services are up.
|
|
484
|
+
container system status
|
|
485
|
+
|
|
486
|
+
# View service logs (default last 5m; --last <n>[m|h|d], -f to follow).
|
|
487
|
+
container system logs
|
|
488
|
+
container system logs --last 1h
|
|
489
|
+
container system logs -f
|
|
490
|
+
|
|
491
|
+
# Add --debug to any command for verbose output (or set CONTAINER_DEBUG).
|
|
492
|
+
container --debug run --rm docker.io/library/alpine:latest true
|
|
493
|
+
|
|
494
|
+
# Version info for CLI + API server.
|
|
495
|
+
container system version
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
Note: an XPC/connection error means the background API server isn't started — run `container system start`. Feature gates to keep in mind: container-to-container access and the `container network` group require **macOS 26** (both unavailable on **macOS 15**). The CLI refuses to run under Rosetta — Apple silicon only.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask-copilot
|
|
3
|
+
description: "Use GitHub Copilot CLI in non-interactive mode to ask questions, review code, or generate snippets without manual interaction."
|
|
4
|
+
category: development
|
|
5
|
+
risk: critical
|
|
6
|
+
source: self
|
|
7
|
+
source_repo: cshara1/antigravity-awesome-skills
|
|
8
|
+
source_type: self
|
|
9
|
+
date_added: "2026-07-08"
|
|
10
|
+
author: cshara1
|
|
11
|
+
tags: [copilot, github, cli, review, prompt]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Ask Copilot
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
This skill allows the agent to interact with GitHub Copilot CLI (`copilot`) in a non-interactive (headless) mode. Use this skill when the user explicitly wants secondary advice, code reviews, explanations, or code generation from GitHub Copilot's models.
|
|
20
|
+
|
|
21
|
+
Use `source: self` and `source_type: self` when the skill is original to this repository and does not require README external-source credit.
|
|
22
|
+
|
|
23
|
+
Copilot is an external service. Treat prompts, file paths, snippets, repository content, command output, and generated suggestions as data that may leave the local environment.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
- **User Request Only**: Use this skill **ONLY** when the user explicitly asks to "consult Copilot", "ask Copilot", "review with Copilot", or explicitly requests a second opinion using Copilot.
|
|
28
|
+
- **Do NOT Invoke Automatically**: To comply with privacy policies, the agent must not invoke this skill automatically for its own second opinions or checks without explicit user consent.
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
### Step 1: Request Explicit User Consent
|
|
33
|
+
|
|
34
|
+
Before executing any command that references local files, repository paths, snippets, command output, secrets-adjacent config, or private project context, you **MUST** obtain explicit user consent to send that material to GitHub Copilot.
|
|
35
|
+
|
|
36
|
+
Ask for separate approval before allowing Copilot to run tools, execute shell commands, edit files, install packages, or mutate the workspace.
|
|
37
|
+
|
|
38
|
+
### Step 2: Execute with Minimal Permitted Flags
|
|
39
|
+
|
|
40
|
+
To prevent TUI lockups, execute the `copilot` command with headless flags. Do not use blanket bypasses such as `--yolo`, `--allow-all-tools`, or `--allow-all-paths` for routine Q&A or review.
|
|
41
|
+
|
|
42
|
+
- **For Read-Only / General Q&A**: Send only the user-approved, redacted text in the prompt. Do not grant Copilot broad local-path access; it is not needed when the prompt already contains the approved context.
|
|
43
|
+
- **For Trusted Mutation Tasks**: Prefer a scoped permission flag if the CLI supports one. Use blanket mutation bypasses only after the user explicitly authorizes Copilot to execute tools and mutate the workspace for the specific task.
|
|
44
|
+
|
|
45
|
+
### Step 3: Use Session Management (Optional)
|
|
46
|
+
|
|
47
|
+
To maintain conversation context, use `--name` and `--resume` flags, or pass a `--session-id` on subsequent calls.
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Example 1: General Question (Read-Only)
|
|
52
|
+
|
|
53
|
+
Does not require repository path access or mutation permissions.
|
|
54
|
+
```bash
|
|
55
|
+
copilot -p "Explain how to implement a debounce function in TypeScript" -s
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Example 2: Code Review (Approved File Excerpt)
|
|
59
|
+
|
|
60
|
+
Always confirm the exact file and excerpt with the user before executing. Keep the path in a
|
|
61
|
+
quoted variable; build the prompt from a static instruction plus the approved excerpt. Shell
|
|
62
|
+
does not re-evaluate command-substitution output, so metacharacters inside the reviewed file
|
|
63
|
+
remain prompt text rather than shell syntax:
|
|
64
|
+
```bash
|
|
65
|
+
review_file="path/to/file.ts"
|
|
66
|
+
test -f "$review_file" || { echo "File not found: $review_file" >&2; exit 1; }
|
|
67
|
+
copilot -p "$(printf '%s\n\n' 'Review this approved excerpt for potential memory leaks:'; sed -n '1,220p' -- "$review_file")" -s
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Never construct a shell command by interpolating user-controlled prompt text, paths, issue
|
|
71
|
+
content, or filenames into shell source. Use fixed command structure, quoted variables, and
|
|
72
|
+
approved file content only.
|
|
73
|
+
|
|
74
|
+
### Example 3: Named Session Management
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
copilot -p "Remember this session label for follow-up questions." -s --name "my-session-name"
|
|
78
|
+
copilot -p "Summarize the prior advice in this session." -s --resume "my-session-name"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Best Practices
|
|
82
|
+
|
|
83
|
+
- ✅ **Do:** Ask for user consent before uploading any project files to third-party endpoints.
|
|
84
|
+
- ✅ **Do:** Send only the approved, redacted excerpt; keep Copilot out of the broader workspace.
|
|
85
|
+
- ✅ **Do:** Keep untrusted values in quoted variables or command input, never in shell source.
|
|
86
|
+
- ✅ **Do:** Use `-s` (silent) to suppress metadata and statistics, leaving only clean output.
|
|
87
|
+
- ❌ **Don't:** Automatically trigger this skill for background second opinions without the user's explicit ask.
|
|
88
|
+
- ❌ **Don't:** Send files, logs, environment details, or private repository context to Copilot without explicit approval.
|
|
89
|
+
- ❌ **Don't:** use `--allow-all-paths` for a review, or interpolate untrusted text inside `copilot -p "..."`.
|
|
90
|
+
- ❌ **Don't:** Run `copilot` without permission-bypass flags in background tasks, as it will hang waiting for interactive input.
|
|
91
|
+
|
|
92
|
+
## Limitations
|
|
93
|
+
|
|
94
|
+
- This skill does not replace environment-specific validation, testing, or expert review.
|
|
95
|
+
- Stop and ask for clarification if required inputs, permissions, or safety boundaries are missing.
|
|
96
|
+
- Copilot responses may be incomplete, outdated, or wrong; verify any proposed code locally before using it.
|
|
97
|
+
|
|
98
|
+
## Security & Safety Notes
|
|
99
|
+
|
|
100
|
+
- The `--yolo` flag bypasses all permission prompts and allows Copilot CLI to run arbitrary shell commands and mutate workspace files. It must be treated as a high-risk option and never used by default.
|
|
101
|
+
- Always check that the code/files being sent do not contain sensitive credentials, API keys, or private environment variables.
|
|
102
|
+
- Prefer redacted snippets over whole files when only a small context sample is needed.
|
|
103
|
+
- `--allow-all-paths` grants Copilot broader local visibility than a narrow review requires; it is not a read-only least-privilege flag.
|
|
104
|
+
|
|
105
|
+
## Common Pitfalls
|
|
106
|
+
|
|
107
|
+
- **Problem:** The terminal hangs or the command times out.
|
|
108
|
+
**Solution:** Ensure both `-p` (or `--prompt`) and the narrowest required non-interactive permission flag are present in the command arguments. Without required permission flags, the CLI may prompt for confirmation and hang headless processes.
|
|
109
|
+
|
|
110
|
+
## Related Skills
|
|
111
|
+
|
|
112
|
+
- `@cli-assistant` - How to interact with CLI tools in general.
|