docs: transformed README into a visual, picture-book style cyber guide#18
docs: transformed README into a visual, picture-book style cyber guide#18sanjana2505006 wants to merge 6 commits into
Conversation
Revamped the README with new visuals, OS logos, GIFs, and improved installation sections. Made it more user-friendly, organised, and visually engaging for beginners.
|
Warning Review limit reached
Next review available in: 43 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. 📝 WalkthroughWalkthroughThe README is rewritten as a structured “Kali Magic” guide with project information, supported operating systems, prerequisites, and two documented installation paths: direct Termux and Debian via ChangesKali Magic documentation
Estimated code review effort: 1 (Trivial) | ~5 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (4)
README.md (4)
11-27: Move asset setup instructions to separate guide.These contributor/maintainer setup instructions belong in
CONTRIBUTING.mdor a dedicated setup guide rather than the main README. Embedding setup steps in the primary documentation creates confusion about whether end-users need to run these commands. The README should focus on user-facing content.Consider creating a
CONTRIBUTING.mdordocs/SETUP.mdfile with these instructions and replacing lines 11-27 with a simple reference like:> **For maintainers:** See [CONTRIBUTING.md](CONTRIBUTING.md) to set up demo assets.
146-180: Move bash script to separate file.The 35-line
optimize_gifs.shscript is embedded inline in the README, which reduces readability. Since the script is meant to be saved toscripts/optimize_gifs.sh(per lines 182-186), move it to the actual file and reference it from the README.Replace lines 146-180 with a brief reference:
To optimize GIFs for the README, use the included script: \`\`\`bash ./scripts/optimize_gifs.sh 640 15 git add assets/gifs/optimized/* git commit -m "Add optimized README GIFs" git push origin main \`\`\` See `scripts/optimize_gifs.sh` for details.Then create
scripts/optimize_gifs.shwith the full script content.
11-27: Remove or simplify external asset download instructions.The README includes detailed instructions for downloading images from Wikimedia Commons (lines 11-27). While this improves documentation, it creates maintenance issues:
- External URLs may break or become unavailable
- README images won't render until contributors manually download them
- This adds friction for new contributors
Recommendation: Either:
- Option A (Preferred): Commit image assets to the repository under
assets/gifs/, removing the need for external downloads- Option B: Remove the asset setup instructions and accept that the README will have limited visual enhancement until images are manually added
- Option C: Document this as an optional enhancement step in
CONTRIBUTING.mdrather than the main READMEThis ties into the earlier comment about moving asset setup to a separate contribution guide.
1-50: Minor: Reduce exclamation mark density for professional tone.Static analysis flags 5 exclamation marks in ~2312 characters as potentially excessive. While the current tone is engaging (good for educational content), reducing exclamation marks slightly can improve perceived professionalism without losing enthusiasm.
Consider replacing some exclamation-based emphasis with:
- Em-dashes for emphasis
- Stronger adjectives
- Strategic emoji use (already well-used throughout)
This is a very minor style concern and not a blocker; feel free to defer or skip if the current tone aligns with project brand.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
README.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~71-~71: Using many exclamation marks might seem excessive (in this case: 5 exclamation marks for a text that’s 2312 characters long)
Context: ...ble, server-ready Linux distribution. | 
🪛 markdownlint-cli2 (0.18.1)
README.md
7-7: No empty links
(MD042, no-empty-links)
33-33: Link fragments should be valid
(MD051, link-fragments)
34-34: Link fragments should be valid
(MD051, link-fragments)
35-35: Link fragments should be valid
(MD051, link-fragments)
36-36: Link fragments should be valid
(MD051, link-fragments)
37-37: Link fragments should be valid
(MD051, link-fragments)
38-38: Link fragments should be valid
(MD051, link-fragments)
39-39: Link fragments should be valid
(MD051, link-fragments)
40-40: Link fragments should be valid
(MD051, link-fragments)
41-41: Link fragments should be valid
(MD051, link-fragments)
42-42: Link fragments should be valid
(MD051, link-fragments)
43-43: Link fragments should be valid
(MD051, link-fragments)
44-44: Link fragments should be valid
(MD051, link-fragments)
45-45: Link fragments should be valid
(MD051, link-fragments)
46-46: Link fragments should be valid
(MD051, link-fragments)
47-47: Link fragments should be valid
(MD051, link-fragments)
48-48: Link fragments should be valid
(MD051, link-fragments)
49-49: Link fragments should be valid
(MD051, link-fragments)
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (2)
README.md (2)
99-141: Restructure Quick Install into clear alternative paths (duplicate concern).The Quick Install section mixes two installation flows without clear boundaries:
- Direct Termux installation (lines 100–118): updates, installs nethunter-termux, optional extras
- proot-distro + Debian (lines 119–141): sets up a Debian container, installs nethunter-termux again inside it
Problems:
- No "Option A" / "Option B" labeling to disambiguate intent
install-nethunter-termuxappears twice (line 106 & line 127), suggesting the user should do both—which is confusing- Commands after
proot-distro login debian(lines 125–141) are executed inside the container, but this is not explicitly labeled- Line 109 (wget for menu.sh) has awkward formatting
Per prior review feedback, restructure this section clearly. Choose one of these approaches:
Approach 1: Sequential steps — if users should do Termux → then proot-distro → then Debian, make this explicit with clear step labels and explain why nethunter is needed twice.
Approach 2: Mutually exclusive options — if users choose either Termux or proot-distro, split into:
## 🚀 Quick Install ### Option A: Direct Termux Installation [commands for Termux only] ### Option B: Debian via proot-distro [commands to set up proot-distro + Debian] [commands to run inside Debian container] ## Usage Examples [shared usage examples for both paths]
7-7: Fix empty badge link (MD042) — duplicate of prior issue.The Downloads badge still has an empty link
()that violates markdown linting. Additionally, the badge repository reference points toParrotSecurityOsForAndroidbut this project isKali-Linux-for-Android.Apply this diff to fix both the empty link and repository mismatch:
-[]() +[](https://github.com/AryanVBW/Kali-Linux-for-Android/releases)
🧹 Nitpick comments (1)
README.md (1)
143-177: Consider moving the GIF optimization script to a dedicated file.The
optimize_gifs.shscript is embedded in the README (lines 143–177) as part of the Quick Install section. While the script itself is well-written, embedding it in documentation is unconventional and creates maintenance burden.Recommended approach: Move this script to
scripts/optimize_gifs.shin the repository and reference it from the README:### Optimize README GIFs The repository includes a GIF optimization script to reduce file sizes: \`\`\`bash # From repository root: ./scripts/optimize_gifs.sh 640 15 \`\`\` See [`scripts/optimize_gifs.sh`](scripts/optimize_gifs.sh) for details. \`\`\`This keeps the README focused on documentation and makes the script reusable and easier to maintain. If this is a one-time contributor setup task, clarify that in the CONTRIBUTING section.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
README.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md
[style] ~68-~68: Using many exclamation marks might seem excessive (in this case: 5 exclamation marks for a text that’s 2177 characters long)
Context: ...ble, server-ready Linux distribution. | 
🪛 markdownlint-cli2 (0.18.1)
README.md
7-7: No empty links
(MD042, no-empty-links)
30-30: Link fragments should be valid
(MD051, link-fragments)
31-31: Link fragments should be valid
(MD051, link-fragments)
32-32: Link fragments should be valid
(MD051, link-fragments)
33-33: Link fragments should be valid
(MD051, link-fragments)
34-34: Link fragments should be valid
(MD051, link-fragments)
35-35: Link fragments should be valid
(MD051, link-fragments)
36-36: Link fragments should be valid
(MD051, link-fragments)
37-37: Link fragments should be valid
(MD051, link-fragments)
38-38: Link fragments should be valid
(MD051, link-fragments)
39-39: Link fragments should be valid
(MD051, link-fragments)
40-40: Link fragments should be valid
(MD051, link-fragments)
41-41: Link fragments should be valid
(MD051, link-fragments)
42-42: Link fragments should be valid
(MD051, link-fragments)
43-43: Link fragments should be valid
(MD051, link-fragments)
44-44: Link fragments should be valid
(MD051, link-fragments)
45-45: Link fragments should be valid
(MD051, link-fragments)
46-46: Link fragments should be valid
(MD051, link-fragments)
🔇 Additional comments (1)
README.md (1)
11-24: Clarify asset download block intent and relocate if needed.Lines 11–24 contain instructions to download demo GIFs and logos, placed between badges and the TOC. The intent is unclear:
- If these are for contributors setting up the repository, move them to a dedicated
CONTRIBUTINGorDevelopment Setupsection.- If these are for users, explain why they need to run these commands and how the downloaded assets are used.
Current placement interrupts the reader flow and conflates user guidance with potential maintenance tasks.
Clarify the intent, relocate this block appropriately, and add a brief context comment if users are expected to run these commands.
Resolve broken badges, missing TOC sections, and absent logo assets. Split Quick Install into clear Option A/B paths and extract the GIF optimizer into scripts/optimize_gifs.sh.
Fix badges, trim TOC to existing sections, use working logo URLs, and split Quick Install into Option A/B. Drop the earlier extra rewrite.
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 108-110: Update both GUI startup instructions in README.md to run
nethunter kex passwd immediately before each nethunter kex & command, including
the sections around lines 108-110 and 164-167, so the KeX password is
initialized before the session is backgrounded.
- Around line 113-136: Update the README section “Option B: Debian via
proot-distro” to remove the unsupported `apt install kali-tools-top10` and
`install-nethunter-termux` steps from inside Debian. Make the instructions fully
Debian-native, or explicitly direct users to “Option A” for the supported
NetHunter setup while retaining only valid Debian container commands.
- Around line 68-74: Update the “Prerequisites” storage documentation in
README.md to replace the single 3–8 GB estimate with separate realistic minimum
requirements for Option A and Option B, accounting for the Debian/proot rootfs,
kali-tools-top10, package caches, and updates where applicable. Keep the other
prerequisite entries unchanged.
In `@scripts/optimize_gifs.sh`:
- Around line 8-9: Validate the MAX_WIDTH and FPS parameters immediately after
their default assignments in scripts/optimize_gifs.sh, requiring each to be a
positive integer before constructing or invoking the ffmpeg filter graph. Emit a
clear parameter-specific error and exit nonzero when validation fails; preserve
the existing defaults and processing for valid values.
- Line 32: Update the ffmpeg invocation in the GIF optimization flow to generate
a source-specific palette with palettegen, then apply it during scaling and
frame-rate conversion with paletteuse; retain the existing MAX_WIDTH and FPS
behavior. Add the appropriate quiet/log-level option to suppress verbose ffmpeg
output while preserving error visibility.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 91abd888-e49b-4c89-94cb-38a5d40ca393
⛔ Files ignored due to path filters (4)
assets/gifs/debian-logo.svgis excluded by!**/*.svgassets/gifs/kali-logo.svgis excluded by!**/*.svgassets/gifs/parrot-logo.svgis excluded by!**/*.svgassets/gifs/ubuntu-logo.svgis excluded by!**/*.svg
📒 Files selected for processing (2)
README.mdscripts/optimize_gifs.sh
| # Start GUI (after install completes) | ||
| nethunter kex & | ||
| ./menu.sh |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Set the KeX password before backgrounding the session. Add nethunter kex passwd before each nethunter kex & at lines 108-110 and 164-167 so first-time users don’t hit an interactive prompt or stalled GUI start.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 108 - 110, Update both GUI startup instructions in
README.md to run nethunter kex passwd immediately before each nethunter kex &
command, including the sections around lines 108-110 and 164-167, so the KeX
password is initialized before the session is backgrounded.
| MAX_WIDTH="${1:-640}" | ||
| FPS="${2:-15}" |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Validate input parameters.
Since MAX_WIDTH and FPS are injected directly into the ffmpeg filter graph, passing non-numeric arguments will cause ffmpeg to fail with obscure syntax errors. Validating them as integers upfront improves robustness and error reporting.
🛡️ Proposed fix to add validation
MAX_WIDTH="${1:-640}"
FPS="${2:-15}"
+
+if ! [[ "$MAX_WIDTH" =~ ^[0-9]+$ ]] || ! [[ "$FPS" =~ ^[0-9]+$ ]]; then
+ echo "Error: max_width and fps must be positive integers." >&2
+ exit 1
+fi📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| MAX_WIDTH="${1:-640}" | |
| FPS="${2:-15}" | |
| MAX_WIDTH="${1:-640}" | |
| FPS="${2:-15}" | |
| if ! [[ "$MAX_WIDTH" =~ ^[0-9]+$ ]] || ! [[ "$FPS" =~ ^[0-9]+$ ]]; then | |
| echo "Error: max_width and fps must be positive integers." >&2 | |
| exit 1 | |
| fi |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/optimize_gifs.sh` around lines 8 - 9, Validate the MAX_WIDTH and FPS
parameters immediately after their default assignments in
scripts/optimize_gifs.sh, requiring each to be a positive integer before
constructing or invoking the ffmpeg filter graph. Emit a clear
parameter-specific error and exit nonzero when validation fails; preserve the
existing defaults and processing for valid values.
| tmp="${OUT_DIR}/tmp-${fname}" | ||
| out="${OUT_DIR}/${fname%.*}-opt.gif" | ||
|
|
||
| ffmpeg -y -i "$gif" -vf "scale='min(${MAX_WIDTH},iw)':'-2',fps=${FPS}" "$tmp" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Generate a custom palette to prevent severe GIF quality degradation.
When ffmpeg scales and re-encodes a GIF directly, it defaults to a generic 256-color palette. This strips the original palette and often produces heavy dithering and color artifacts, making terminal text and UI elements unreadable.
To preserve visual quality, use the palettegen and paletteuse filters. Additionally, silencing ffmpeg's verbose output prevents flooding the terminal when processing multiple files.
🎨 Proposed fix to preserve custom palettes and suppress noise
- ffmpeg -y -i "$gif" -vf "scale='min(${MAX_WIDTH},iw)':'-2',fps=${FPS}" "$tmp"
+ ffmpeg -hide_banner -loglevel error -y -i "$gif" -vf "fps=${FPS},scale='min(${MAX_WIDTH},iw)':-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" "$tmp"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/optimize_gifs.sh` at line 32, Update the ffmpeg invocation in the GIF
optimization flow to generate a source-specific palette with palettegen, then
apply it during scaling and frame-rate conversion with paletteuse; retain the
existing MAX_WIDTH and FPS behavior. Add the appropriate quiet/log-level option
to suppress verbose ffmpeg output while preserving error visibility.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
README.md (1)
77-90: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick winAvoid executing remote scripts directly
This still downloads and runs
install-nethunter-termux, pullsmenu.shfrom the mutablemainbranch, and overwrites~/.bashrcfrom the same source. Pin these URLs to immutable revisions or add checksum/signature checks before execution.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` around lines 77 - 90, Update the README installation commands for install-nethunter-termux, menu.sh, and default.bashrc to use immutable, version-pinned URLs or verify downloaded files with trusted checksum/signature checks before execution or installation; preserve the existing setup flow while preventing use of mutable remote content.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@README.md`:
- Around line 77-90: Update the README installation commands for
install-nethunter-termux, menu.sh, and default.bashrc to use immutable,
version-pinned URLs or verify downloaded files with trusted checksum/signature
checks before execution or installation; preserve the existing setup flow while
preventing use of mutable remote content.
There was a problem hiding this comment.
1 issue found and verified against the latest diff
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="README.md">
<violation number="1" location="README.md:5">
P2: The README claims MIT licensing while linking to a nonexistent `LICENSE` file, leaving users with a broken badge and no stated legal terms. Adding the actual license file or removing/correcting this badge and the license wording would make the legal information accurate.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
|
||
| > Transform your Android device into a **portable cybersecurity playground** — run Kali / NetHunter tools on Android (Termux / LinuxDroid integration). 🚀💻📱 | ||
|
|
||
| [](LICENSE) |
There was a problem hiding this comment.
P2: The README claims MIT licensing while linking to a nonexistent LICENSE file, leaving users with a broken badge and no stated legal terms. Adding the actual license file or removing/correcting this badge and the license wording would make the legal information accurate.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At README.md, line 5:
<comment>The README claims MIT licensing while linking to a nonexistent `LICENSE` file, leaving users with a broken badge and no stated legal terms. Adding the actual license file or removing/correcting this badge and the license wording would make the legal information accurate.</comment>
<file context>
@@ -1,61 +1,271 @@
+
+> Transform your Android device into a **portable cybersecurity playground** — run Kali / NetHunter tools on Android (Termux / LinuxDroid integration).
+
+[](LICENSE)
+[](https://github.com/AryanVBW/Kali-Linux-for-Android/releases)
+[](https://github.com/AryanVBW/Kali-Linux-for-Android/releases)
</file context>
Updated the README with new OS logos, visuals, and installation sections for better clarity and presentation.
This update makes the README more user-friendly and visually rich.
Closes #2
Summary by CodeRabbit