Oi, Igor! Tudo bem?
Para adicionar as funcionalidades mencionadas, podemos utilizar a estrutura de repetição do-while para verificar se o valor digitado é válido com a ajuda de algumas funcionalidades do JavaScript mostradas no código alterado abaixo:
let nome;
let numero;
// Função para verificar se a string contém apenas letras
function isOnlyLetters(str) {
    return /^[a-zA-Z]+$/.test(str);
}
// Solicitar nome até que seja fornecido um valor não vazio e apenas letras
do {
    nome = prompt('Informe seu nome:');
    if (!nome.trim() || !isOnlyLetters(nome)) {
        alert('Por favor, digite um nome válido.');
    }
} while (!nome.trim() || !isOnlyLetters(nome));
// Solicitar número até que seja fornecido um valor válido
do {
    let input = prompt(`${nome}, poderia digitar um número:`);
    numero = parseInt(input);
    if (isNaN(numero)) {
        alert('Por favor, digite um número válido.');
    }
} while (isNaN(numero));
// Estrutura condicional
if (numero > 0) {
    alert(`${nome}, o número ${numero} é positivo.`);
} else if (numero < 0) {
    alert(`${nome}, o número ${numero} é negativo.`);
} else {
    alert(`${nome}, o número ${numero} é neutro.`);
}
Nesse código, na função isOnlyLetters(str) recebemos uma string como argumento, representada por str. Somado a isso, usamos uma expressão regular (regex) entre barras (/) "/^[a-zA-Z]+$/", de forma que: ^ indica que a correspondência deve começar no início da string, [a-zA-Z] representa um conjunto de caracteres permitidos na string, que nesse caso são as letras minúsculas (a-z) e maiúsculas (A-Z). +, indica que deve haver pelo menos um desses caracteres na string e $, indica que a correspondência deve ocorrer até o final da string.
Portanto, a expressão regular completa significa que estamos procurando uma string que contenha apenas letras (maiúsculas ou minúsculas) e nada mais. Dessa forma, !isOnlyLetters(nome) chama a função isOnlyLetters e retorna verdadeiro se o nome não contiver apenas letras (se contiver números, espaços, etc.)
Além disso, o método .test(str) testa se a string fornecida (str) corresponde à expressão regular. Por fim, return retorna true se a string contiver apenas letras e false caso contrário.
Somado a isso, é importante citar que em relação a expressão !nome.trim(), o método trim() é utilizado para remover espaços em branco do início e do final de uma string. Isso é útil para garantir que a string não seja composta apenas por espaços em branco. Por exemplo, se o usuário digitar apenas espaços em branco, nome.trim() resultará em uma string vazia. Dessa forma, como o operador ! é o operador de negação lógica, ele inverte o valor da expressão que o segue. Portanto, !nome.trim() será true se nome.trim() for uma string vazia (após remover espaços em branco) e false caso contrário.
Por fim, a função isNaN(numero) é uma função em JavaScript que verifica se o valor fornecido não é um número (NaN, que significa "Not a Number").
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição! 
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓