diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..bfb71d1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,7 @@ +# Template chooser for this repository. +# Docs: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository +blank_issues_enabled: true +contact_links: + - name: Advanced Telerobotics Research Lab website + url: https://www.atr.cs.kent.edu/ + about: News, programs and contact details for the lab at Kent State University. diff --git a/.github/ISSUE_TEMPLATE/docs-fix.yml b/.github/ISSUE_TEMPLATE/docs-fix.yml new file mode 100644 index 0000000..c870ca0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/docs-fix.yml @@ -0,0 +1,47 @@ +# Issue form: report a wrong fact, an outdated detail or a broken link in this repository. +# Schema: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema +name: Docs fix +description: Report a wrong fact, an outdated detail or a broken link on these pages. +title: "Docs fix: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for helping keep the lab's pages accurate. This issue is public, so don't include private information. To change or remove your own member profile, open a new issue that says so, or email the director. + + - type: input + id: page + attributes: + label: Page + description: The file or link where you found the problem. + placeholder: achievements.md + validations: + required: true + + - type: dropdown + id: kind + attributes: + label: What kind of problem is it? + options: + - A wrong or outdated fact + - A broken link + - A typo or style problem + - Something missing + - Other + validations: + required: true + + - type: textarea + id: problem + attributes: + label: What is wrong + description: Quote the current text, or paste the broken link. + validations: + required: true + + - type: textarea + id: fix + attributes: + label: Suggested fix and source + description: What it should say, and a public source that shows it (an official page, a DOI, a program listing). Facts about the lab change only with a source or the director's confirmation. diff --git a/.github/ISSUE_TEMPLATE/member-profile.yml b/.github/ISSUE_TEMPLATE/member-profile.yml new file mode 100644 index 0000000..4e8e717 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/member-profile.yml @@ -0,0 +1,147 @@ +# Issue form: a lab member submits their own profile for members/README.md. +# Schema: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema +# The `member-profile` label must exist in the repository; GitHub does not create it automatically. +# The field ids below are the keys a maintainer or agent copies into members/profiles/.md +# (see members/README.md, "Profile file format"). +name: Member profile +description: Lab members, 18 or older, submit or update their profile for the Advanced Telerobotics Research Lab member list. +title: "Member profile: " +labels: ["member-profile"] +body: + - type: markdown + attributes: + value: | + ## Before you start + + **This issue is public the moment you submit it.** Anyone on the internet can read it, including earlier versions if you edit it later. Share only what you are happy to see on the lab's public member page. + + - **Never include** phone numbers, student or employee ID numbers, home addresses, your date of birth or anything else private. + - **Under 18? Do not use this form.** High school interns and anyone under 18 are never listed by name, so there is nothing to submit. + - Add your name after "Member profile: " in the title, for example "Member profile: Firstname Lastname". + - The lab lead reviews every submission before anything is published. You can ask for your profile to be changed or removed at any time by opening a new issue or emailing the director. + + - type: input + id: name + attributes: + label: Name as it should be printed + description: Your full name exactly as you want it on the member page. + placeholder: Firstname Lastname + validations: + required: true + + - type: input + id: preferred_name + attributes: + label: Preferred first name + description: Optional. Only if you go by a different first name day to day. + placeholder: Firstname + + - type: input + id: pronouns + attributes: + label: Pronouns + description: Optional. Leave blank if you'd rather not say. + placeholder: she/her, he/him, they/them + + - type: dropdown + id: role + attributes: + label: Role in the lab + description: Pick the one that fits best right now. Alumni pick "Alumni". + options: + - Director + - Postdoctoral researcher + - Ph.D. student + - M.S. student + - Undergraduate researcher + - Visiting researcher + - Staff + - Alumni + - Other + validations: + required: true + + - type: input + id: program + attributes: + label: Program or major, and class year + description: Kent State style, for example "first-year student", never "freshman". Staff and visitors can write their home department or institution. + placeholder: Computer science, Ph.D., class of 2028 + + - type: input + id: start + attributes: + label: Start term and year + description: When you joined the lab. + placeholder: Fall 2025 + validations: + required: true + + - type: input + id: end + attributes: + label: End term and year (alumni only) + description: When you left the lab. Leave blank if you are a current member. + placeholder: Spring 2026 + + - type: textarea + id: interests + attributes: + label: Research interests + description: Three to five short phrases, separated by commas. + placeholder: Human-robot interaction, teleoperation, Physical AI + + - type: textarea + id: projects + attributes: + label: Lab projects + description: The lab projects you work or worked on, named the way the lab names them (for example VendoBot, Coffee Buddy, PepperKit, Expressive Motion). Link only public repositories. + placeholder: PepperKit (2025 to present) + + - type: textarea + id: bio + attributes: + label: Short bio + description: | + 50 to 80 words, in the third person. Kent State style: your full name first, then your last name; no "Dr."; no comma before "and" in a simple list ("Python, C++ and ROS 2"); titles lowercase after your name. No results or awards unless they have a public source. + placeholder: Firstname Lastname is a Ph.D. student in computer science at Kent State University and a member of the Advanced Telerobotics Research Lab. Lastname works on ... + validations: + required: true + + - type: textarea + id: links + attributes: + label: Links + description: Optional. One per line. Leave out any you don't want public. + value: | + GitHub: + Personal site: + Google Scholar: + ORCID: + LinkedIn: + + - type: textarea + id: headshot + attributes: + label: Headshot + description: | + Optional. Drag and drop one image into this box. Square, at least 800 × 800 px, plain background, only you in the frame, JPG or PNG. The image becomes public as soon as you submit, so add it only if you also tick the photo consent box below. + + - type: checkboxes + id: consent + attributes: + label: Consent (required) + description: The lab lists members only with their written permission. Ticking these boxes is that permission. + options: + - label: I consent to the Advanced Telerobotics Research Lab publishing my name and the information in this form on its public member page. + required: true + - label: I am 18 or older. + required: true + + - type: checkboxes + id: photo_consent + attributes: + label: Photo consent (optional) + options: + - label: I consent to the lab publishing the headshot I attached above. + required: false diff --git a/.github/assets/header.png b/.github/assets/header.png new file mode 100644 index 0000000..6131b38 Binary files /dev/null and b/.github/assets/header.png differ diff --git a/.github/assets/icons/award.png b/.github/assets/icons/award.png new file mode 100644 index 0000000..3131b59 Binary files /dev/null and b/.github/assets/icons/award.png differ diff --git a/.github/assets/icons/camera-vision.png b/.github/assets/icons/camera-vision.png new file mode 100644 index 0000000..4b7743c Binary files /dev/null and b/.github/assets/icons/camera-vision.png differ diff --git a/.github/assets/icons/email.png b/.github/assets/icons/email.png new file mode 100644 index 0000000..8ba5cfa Binary files /dev/null and b/.github/assets/icons/email.png differ diff --git a/.github/assets/icons/publication.png b/.github/assets/icons/publication.png new file mode 100644 index 0000000..a66a79b Binary files /dev/null and b/.github/assets/icons/publication.png differ diff --git a/.github/assets/icons/team.png b/.github/assets/icons/team.png new file mode 100644 index 0000000..797136a Binary files /dev/null and b/.github/assets/icons/team.png differ diff --git a/.github/assets/icons/telepresence-robot.png b/.github/assets/icons/telepresence-robot.png new file mode 100644 index 0000000..f22369c Binary files /dev/null and b/.github/assets/icons/telepresence-robot.png differ diff --git a/.github/assets/social-preview.png b/.github/assets/social-preview.png new file mode 100644 index 0000000..ec8f0f1 Binary files /dev/null and b/.github/assets/social-preview.png differ diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..7f703e7 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,37 @@ +name: docs + +on: + push: + branches: [main, master] + pull_request: + schedule: + - cron: "0 9 * * 1" # Mondays: catch links that rot over time + workflow_dispatch: + +permissions: + contents: read + +jobs: + markdown: + name: Markdown lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: DavidAnson/markdownlint-cli2-action@v24 + with: + globs: "**/*.md" + + links: + name: Link check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + # Pull requests check only links to files in this repository (--offline), because links to other + # ATR-Lab repositories may point at pages that are merged later. Pushes and the weekly run check everything. + - uses: lycheeverse/lychee-action@v2 + with: + args: >- + --no-progress --max-concurrency 8 --accept 200,206,429 + ${{ github.event_name == 'pull_request' && '--offline' || '' }} + "**/*.md" + fail: true diff --git a/.gitignore b/.gitignore index 5148e52..dbb06cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1,21 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +# macOS and Windows file-system clutter +.DS_Store +._* +Thumbs.db +desktop.ini + +# Editor and IDE folders +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Local tooling (markdownlint, link checks, Python helpers) +node_modules/ +.lycheecache +.venv/ +__pycache__/ + +# Drafts you do not want to publish by accident +*.local.md diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 0000000..5328291 --- /dev/null +++ b/.lycheeignore @@ -0,0 +1,13 @@ +# Sites that block automated link checkers (403/999 to bots). Check these by hand when you edit them. +^https://dl\.acm\.org/ +^https://doi\.org/10\.1145/ +^https://ieeexplore\.ieee\.org/ +^https://(www\.)?linkedin\.com/ +^https://(www\.)?researchgate\.net/ +^https://(www\.)?instagram\.com/ +^https://(www\.)?x\.com/ +^https://(www\.)?twitter\.com/ +^https://(www\.)?reddit\.com/ +^https://(www\.)?raspberrypi\.com/ +^https://forums\.raspberrypi\.com/ +^https://support\.unitree\.com/ diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc new file mode 100644 index 0000000..5bc8cbb --- /dev/null +++ b/.markdownlint.jsonc @@ -0,0 +1,20 @@ +// markdownlint rules for ATR Lab docs (https://github.com/DavidAnson/markdownlint) +{ + "default": true, + // Long lines are fine in prose; editors wrap them. + "MD013": false, + // READMEs open with an HTML header image instead of a "# Heading". + "MD041": false, + // HTML is allowed only for layout GitHub supports: centered headers, card grids, collapsible sections. + "MD033": { + "allowed_elements": ["p", "img", "a", "b", "br", "sub", "sup", "table", "tr", "td", "th", "thead", "tbody", "picture", "source", "details", "summary", "kbd", "div"] + }, + // Repeated headings are fine in different sections (e.g. "Safety" under each robot). + "MD024": { "siblings_only": true }, + // Numbered lists may use 1. 2. 3. or all 1. + "MD029": false, + // Table pipe spacing is cosmetic; "|---|" and "| --- |" are both fine. + "MD060": false, + // Emphasis used as a label ("**Read this when** ...") is not a heading. + "MD036": false +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..bb842d0 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,135 @@ +# AGENTS.md: about + +This repository is the public profile of the Advanced Telerobotics Research Lab (Department of Computer Science, Kent State University, GitHub org `ATR-Lab`): what the lab is, its research, its dated achievements, its publications, a press kit for media and its member list, including the GitHub issue form members use to submit their own profile. People (students, visitors, reporters, Kent State editors) and coding agents both read it. It is **not** the lab website ([www.atr.cs.kent.edu](https://www.atr.cs.kent.edu/)), not an onboarding or safety guide (that is `getting-started-atr-lab`) and not a place for unverified claims: every lab fact here must trace to the lab's verified fact base or a linked source. + +## Repo map + +| Path | What it is | +|---|---| +| `README.md` | Landing page: formal one-liner, card grid, at a glance, highlights, projects, programs, contact, repo map | +| `research.md` | Positioning (telepresence to Physical AI), four message pillars, current projects, platforms, past projects, programs, public code | +| `achievements.md` | Dated timeline with the allowed wording and a source per row; never-upgrade table; never-claim list; how to add a result | +| `publications.md` | VendoBot (HRI 2026), awarded papers, a selected IEEE-style list from the lab website, website-vs-publisher differences | +| `press-kit/README.md` | Media kit index: top line for media contact, checklist, what is still to be supplied, rules for users | +| `press-kit/boilerplates.md` | One-liners, 25-, 50- and 100-word versions, social bio, mission statement, each with approval status | +| `press-kit/fact-sheet.md` | Verified facts only, for reporters | +| `press-kit/director-bio.md` | 50-word director bio template (brackets stay until the director's approved CV fills them) | +| `press-kit/coverage-log.md` | Table template for media coverage | +| `press-kit/logos/README.md` | Logo usage note (clear space, minimum sizes, backgrounds, Kent State co-branding, never list) | +| `press-kit/logos/png/` | Six 3000 px PNG masters: horizontal navy and white, horizontal-short navy, stacked navy, mark navy and white | +| `press-kit/logos/svg/` | The same six logos as SVG | +| `press-kit/photos/README.md` | Photo and b-roll requirements, consent rules, photo log (no photos yet) | +| `members/README.md` | Director entry, current member and alumni tables, submit link, message to send, maintainer procedure, profile file format | +| `members/profiles/` | One approved profile per member, `.md` plus an optional `.jpg`; empty for now (`.gitkeep`) | +| `.github/ISSUE_TEMPLATE/member-profile.yml` | Issue form members use to submit a profile (label `member-profile`) | +| `.github/ISSUE_TEMPLATE/docs-fix.yml` | Issue form to report a wrong fact or broken link (label `bug`) | +| `.github/ISSUE_TEMPLATE/config.yml` | Template chooser: blank issues allowed, contact link to the lab website | +| `.github/workflows/docs.yml` | CI: markdownlint on every push and pull request; lychee checks local links on pull requests and every link after merge and weekly | +| `.github/assets/header.png`, `.github/assets/social-preview.png` | README banner and GitHub social preview (don't regenerate) | +| `.github/assets/icons/` | The six navy badge icons used by the README card grid | +| `.lycheeignore` | URL patterns the link checker skips (sites such as ACM that refuse automated requests; check those by hand) | +| `.markdownlint.jsonc` | markdownlint rules shared by the lab's docs repos | +| `.gitignore` | OS, editor and local-tool files | +| `AGENTS.md` | This file | +| `CLAUDE.md` | One line, `@AGENTS.md`, so Claude Code loads this file | +| `LICENSE` | MIT, 2017-2026; the lab's and Kent State's names and logos are excluded | + +## Sources of truth + +- **Lab facts** (names, director, projects, platforms, programs, results, contacts): only the ATR Lab design skill's `references/brand-foundation.md` (the "fact base"; verified Sept. 28, 2026), mainly §1 (the lab in one screen), §9 (proof bank: allowed wording) and §11 (verified contact block). The skill is public at [ATR-Lab/atr-lab-design-skill](https://github.com/ATR-Lab/atr-lab-design-skill). +- **Results:** copy the proof bank's allowed wording exactly. Keep every `[confirm]` bracket until the director confirms it. +- **Boilerplates:** `brand-foundation.md` §10 is canonical. Copy verbatim, keep the draft labels. +- **Publications:** the lab website's publications page for what is listed, and the DOI record (Crossref) for venue, pages and DOI. Only entries whose authors and title match the DOI record go in the selected list. +- **Repositories:** link only public `ATR-Lab` repositories, and only after reading their README. Check with `gh repo view ATR-Lab/ --json visibility`. +- **Kent State rules:** kent.edu pages linked where used (brand, photography, media relations). +- **Never invent** names, rooms, phone numbers, results, dates, versions, counts or quotes. Anything only the lab can supply stays a `[bracketed placeholder]` and is listed under [Open items](#open-items). +- **Never print:** the nonexistent X handle from the old template footer, the director's office room or phone as the lab's, the college's former name, "KSU" in running copy, "ATR" alone, any RoboCup placement, media-outlet counts for TeleBot, headcounts or the director's career totals as lab statistics. + +## Writing rules + +- Voice: precise, curious, hands-on, welcoming, grounded. Write for a smart first-year student; define jargon on first use (Physical AI = "AI that senses and acts in the real world through a robot"). +- Kent State style: sentence-case headings, no Oxford comma in a simple series, "and" not "&" in prose, one through nine spelled out, dates like "Sept. 30, 2026", phone "330-672-9980", no exclamation marks, no emoji. +- Names: "Advanced Telerobotics Research Lab" on first reference, then "the lab"; "ATR Lab" only in display and tight space on a piece that names Kent State. "Jong-Hoon Kim, associate professor of computer science", then "Kim"; no "Dr.". The round emblem is the "roundel", never a seal. +- Words: ROS 2 (never "ROS2" in prose), teleoperation, telepresence, tele-embodiment, human-robot interaction, open-source (adjective), real-world (adjective), advisor, leader-follower; robots are "it". +- Cut hype: cutting-edge, state-of-the-art, revolutionary, groundbreaking, world-class, innovative, novel, leverage, utilize, seamless, robust, holistic, transformative, pivotal, delve, furthermore, moreover. Quoted text and paper titles keep their original words. +- Never upgrade a result. A finalist is not a winner; a selection is not a placement; a special-session award is not a conference best paper. +- People: name students only with their written permission. Never name anyone under 18. Citations keep the published author list. +- Page structure (all pages except `README.md`, `AGENTS.md`, `CLAUDE.md`): `# Title`, a "Read this when" blockquote, a two-to-four-sentence intro, a Contents list when there are five or more sections, the sections, `## Related`, then the "Last reviewed" footer line. Relative links inside this repo; full `https://github.com/ATR-Lab//blob//` links across repos. +- File names: lowercase kebab-case. Keep paths stable; other repos link here. + +## Task: add a member profile from an issue + +Issues from `.github/ISSUE_TEMPLATE/member-profile.yml` carry the `member-profile` label. The form renders each field as `###